前端大总结

怎么判断两个对象相等?

1、Object.is(obj1, obj3) //true
2、JSON.stringify(obj1)==JSON.stringify(obj2)//true
3、函数传参利用object.keys()将函数转换为键值对数组,然后再判断两个数组长度是否相等,不相等return false,相等继续用for in 值是否相等 相等return  false
4、递归也是利用keys转数组,然后在判断

JavaScript 中怎么获取当前日期的月份?(必会)

1、Let  math= date.getMonth() + 1; 

什么是类数组(伪数组),如何将其转化为真实的数组?(必会) 
1、有length  2、有索引值 3、但是没有数组的push方法
2、转真数组 
1 Array.from()
2 [].slice.call(eleArr) 
3 Array.prototype.slice.call(eleArr) 

如何遍历对象的属性?

1 Object.keys() 将对象的属性名转换为数组
2 For  in
3 Object.getOwnPropertyNames() 
4 for each

JavaScript 中的作用域、预解析与变量声明提升?

作用域 :
1 全局作用域  let var const 声明的变量就是全局作用域
2局部作用域  函数声明的是局部
3 块级作用域  在()里面使用的变量就是块级,if等
预解析:
1 把变量或函数的声明提升到当前作用域的最前面
2 先提升 function,在提升 var 
变量提升 :
定义变量时,声明会被提升到作用域的最上面,变量的赋值不会
函数提升:JavaScript 解析器首先会把当前作用域的函数声明提前到整个作用域的最前面

变量提升与函数提升的区别?

代码执行前引擎会先进行预编译,期间会将变量声明与函数声明提升至对应作用域的最顶端,函数内声明的变量只会提升至该函数作用域最顶层,如果外面有相同变量,那么函数体内的这个变量就会被上升到最顶端

函数提升 
函数提升只会提升函数声明式写法,函数表达式的写法不会
函数提升的优先级大于变量提升的优先级

猜你喜欢

转载自blog.csdn.net/qq_43944285/article/details/124973083
今日推荐