-
script标签中的defer和async属性 - 逻辑与和逻辑或的一些特殊行为:
- 逻辑与
&&- 如果第一个操作数是对象,则返回第二个操作数
- 如果第二个操作数是对象,那么只有在第一个操作数的求值结果为true的情况下才会返回第二个操作数
- 如果两个操作数都是对象,那么返回第二个操作数
- 如果第一个操作数是null、NaN、undefined,那么返回null、NaN、undefined
- 逻辑或
||- 如果第一个操作数是对象,那么返回第一个操作数
- 如果第一个操作数的求值结果是false,那么返回第二个操作数
- 如果两个操作数都是对象,那么返回第一个操作数
- 如果两个操作数都是null、NaN、undefined,那么返回null、NaN、undefined
- 逻辑与
-
==和===操作符的区别 - 被废弃的语法:
with、eval、arguments、callee、callerwitheval-
arguments不是一个数组Array的实例,是一个ArrayLike,即含有length属性,同时键(key)的名字是数字的对象。
- JavaScript中函数的参数都是按值传递的,这句话放到对象上应该这么理解,比如说给函数传递对象obj1,函数内部拿到的是obj1这个对象引用的复制,就是说复制了一个指针同时指向obj1指向的对象,在内部改变这个对象引用上的指向,不会改变外部obj1的指向。
-
typeof操作符和instanceof操作符 - 垃圾收集机制:
- 标记清除法
- 引用计数法
- Array的sort函数接收的比较函数接受v1和v2,如果想让v1位于v2前面,那么就返回负数,如果想要v1位于v2后面,那么就返回一个正数,简而言之,如果想要从小到大排序,就返回
v1-v2,如果想要从大到小排序,就返回v2-v1 - 正则表达式
- 为什么JavaScript中的函数没有重载,因为没有函数签名,所有参数都是作为一个arguments数组传进去的。从另一个角度解释,可以解释为,JavaScript中函数名仅仅是指向函数的一个指针,声明同名函数,会导致后面声明的函数覆盖前面的函数,其实就是将这个指针重新赋值了。
- 函数的length属性表示函数希望接受的命名参数的个数。
- apply和call
- apply接收参数数组
- call接收逐个列举出来的参数
-
exec和test是RegExp的实例方法,match和search是字符串实例的方法 - URI和URL
- 创建对象的几种方式:
- 工厂模式
缺点:无法判断创建出来的对象的类型。function createPerson(name,age){ let o=new Object(); o.name=name; o.age=age; o.sayName=function(){ // ... } return o; } let person1=createPerson("xiaoming",20); - 构造函数模式
缺点:每个方法都要在实例上创建一遍,但方法是作用是一样的,导致浪费资源function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ // ... } } let person1=new Person("xiaoming",20); let person2=new Person("xiaohong",20);注:
new关键字主要做了以下四个工作- 创建一个新对象
- 将构造函数的作用域赋值给新对象,也就是将构造函数的this绑定到这个新对象
- 执行构造函数中的代码
- 返回新对象
- 原型模式
缺点:这个虽然解决了构造函数的问题function Person(){ } Person.prototype.name="xiaoming"; Person.prototype.age=20; Person.prototype.sayName=function(){ // ... } let person1=new Person(); let person2=new Person();
- 工厂模式
- js中几种跨域的实现方法
- 函数防抖和函数节流
- 前端模拟排序动画
- 浏览器渲染的重绘与重排
- 强缓存和协商缓存
- 一文读懂前端缓存
- 从输入URL到页面展示到底发生了什么-很详细,除了省略了浏览器缓存这一步
- 从输入URL到页面显示-详细1
- 从输入URL到页面显示-详细2
- CSS三栏布局的五种实现方式_左右固定中间自适应
- CSS画三角形及其原理
- 实现一个模板引擎
- dragstart,drag,dragend,dragenter,dragover,dragleave/drop事件
- 移动端H5页面适配
- 前端提升页面加载速度
- cookie、localStorage、sessionStorage
- localStorage的属性与方法
- 判断两个链表有没有交点
- 复习eventloop,面试官说细节不对
- 设计模式
- 快速排序
- 各种排序算法的时间复杂度和稳定性
- promise原理
- 面试图谱









网友评论