1.有哪些数据类型?有啥区别?
基本数据类型:String Number undefined null Boolean Symbol
引用数据类型:Object Array Function Date Math Map Set 正则RegExp
区别:基本数据类型放在栈中,占用空间小,大小固定,被频繁使用
引用数据类型存储在堆中,占用空间大,大小不固定,如果放在栈中会影响程序的性能;引用数据类型在栈中存储了相应的指针,该指针指向了该实体的起始地址。
2.有哪些检测数据类型的方法?
typeof :检测基本数据类型(null会被检测为object)
istanceof: 用于精准检测引用数据类型(function会被检查为object)
===:可以检测undefined和null
Object.prototype.toString.call()
3.undefined与null的区别?
Undefined定义未赋值
Null定义被赋值了且值为null
4.什么时候给变量赋值为null?
初始化值,表明将要赋值为对象(null为空对象)
结束前,让对象成为垃圾对象(被垃圾回收器回收)
//了解:5.怎么严格区分变量类型和数据类型
数据类型:基本类型对象类型
变量类型(变量值的类型):基本类型引用类型
5.this是什么?如何确定this的值?
任何函数本质上都是通过某个函数调用的,如果没有指定就是window调用的
所有函数内部都有一个变量this
它的值是调用函数的当前对象
以函数形式调用时,this永远指向this
以方法调用时,this指向调用方法的对象
以构造函数调用时,this指向新创建的对象
使用call或者apply调用时,this指向指定的那个对象
在全局作用域下的this属于window