悄悄告诉你,这都是真题!低调,低调,低调
1、引用类型和基本类型的区别
基本类型有:Undefined、Null、Boolean、Number、String、Symbol
引用类型有:统称为 Object 类型。
1)、内存的角度:
基本类型在内存中,占据一块空间,空间里存储的就是数据,获取数据是直接获取
引用类型在内存中,占据两块空间,第一块存储的是地址,第二块存储的是数据,获取数据是属间接取值
2)、赋值的角度
基本类型赋的就是值,引用类型赋的就是地址
3)、函数传参
基本类型传的是值,引用类型传的是地址
2、null和undefined区别
02JavaScript面试系列_undefined和null变量类型的理解_jiang7701037的博客-CSDN博客
undefined:定义变量后,没有赋值
null:对象没有引用的值,即就是引用类型里没有存储地址
3、js中的==和===区是什么
原生JS ==和===的区别_jiang7701037的博客-CSDN博客_原生js和js的区别
三等是数据和类型都相等, ==会尝试进行类型转换
4、Let ,const、var的区别[越详细越好) 扩展;它们的存储位置
JavaScript面试题,let和var的区别,let和const是什么意思?_jiang7701037的博客-CSDN博客_let在js中表示什么意思?
JavaScript面试题,let和const是什么意思?_jiang7701037的博客-CSDN博客
相同点:都是用来定义变量的
不同点:
1)、声明提升:var会声明提升,let和const不会
2)、作用域:var是全局作用域和函数作用域,let和const是块级作用域(包括全局和函数作用域)
var定义的全局变量是window对象的属性,let和const定义的全局变量不是window的属性
3)、多个同名的变量:var可以,let和const不行
4)、暂时性死区:var没有,let和const有
5)、let在循环里,可以暂存循环便变量
6)、const定义的变量是常量,必须赋初始值而且不可修改
5、const 定义一个数组,改变下标0的值,会报错吗
不会报错,const修饰的是数组,而不是数组的元素。
补充:const修饰引用类型时,都修饰的是地址。而不是数据。
6、for循环里let换成var会发生什么
① 如果换成var,for 循环定义的迭代变量会渗透到循环体外部
② let在循环里会暂存变量,如果在循环的时候向外输出定义的变量,得到的是当前的迭代变量,换成var向外输出都是已经循环结束的结果
7、this的指向,箭头函数的this
this的指向(全),this的场景,call,apply,bind,箭头函数里的this_jiang7701037的博客-CSDN博客
this是函数的内置对象,this是代名词,所以,this代表哪个对象,要看函数属于哪种情况。
this的指向有四种情况:
①当this所在函数是事件处理函数时,this代表事件源
②当this所在函数是构造函数时,this代表new出来的对象
③当this所在函数时类的方法时,this代表调用方法的对象。
④当this所在函数没有明确的所属对象,this代表window对象。
另外:箭头函数根本没有自己的this,它内部的this就是外层代码块的this
补充:
其实,this表示什么意思,更多要看调用,要看运行。因为在调用时,有可能this的指向会被改变。
8、call, apply,bind的区别[说一说基本原理]
相同点:三个函数都会改变this的指向(调用这三个函数的函数内部的this)
不同点:
1)、bind会产生新的函数,(把对象和函数绑定死后,产生新的函数)
2)、call和apply不会产生新的函数,只是在调用时,绑定一下而已。
3)、call和apply的区别,第一个参数都是要绑定的this,apply第二个参数是数组(是函数的所有参数),call把apply的第二个参数单列出来。
9、普通函数和箭头函数的区别
1.写法格式不同
2.箭头函数不能作为构造函数使用
3.箭头函数中没有this和arguments
4.箭头函数不具有prototype原型对象
5.箭头函数不具有super
10、箭头函数的作用(跟普通函数的区别) 简要描述下ES6中的箭头函数以及其使用场景
①.箭头函数使表达更加简洁
②.最主要的目的就是解决this指针的问题
使用场景:
1.简单的函数表达式,内部没有this引用,没有递归,事件绑定,解绑定
2.内层函数表达式,需要调用this,且this应与外层函数一致时(保证指向vue实例)