一、严格模式有哪些?
主流浏览器现在实现了严格模式。es6自动调用严格模式。
在所有语句之前放一个特定语句 "use strict";
1.变量必须先声明后使用
2.函数参数不可有同名属性
3.没有with语句
4.不能对只读属性赋值
5.不能用前缀0表示8进制
6.不能删除变量,只能删除属性
7.eavl和argument不可重新赋值
8.不能删除不可删除的属性 //delete Object.prototype; 抛出 TypeError 错误
9.禁用this指向全局
10.eval不能在外层作用域引入变量
11.argument不能自动反映函数参数
12.增加保留字(protected,static,interface,package,public,private,implements)
二、var、let、const的区别?
三、几种数据类型?
7种数据类型,其中6种基本数据类型,1种复杂数据类型
6种基本数据类型:Undefined,Null,Boolean,Number,String,Symbol
1种复杂数据类型:Object
四、typeof可检测出几种数据类型?
1. 'undefined'----值未定义
2. 'boolean' ----值是布尔值
3. 'string' ----值字符串
4. 'number' ----值是数值
5. 'object' ----值是对象或null(null被认为一个空对象引用)
6. 'function' ----值是函数
7. 'symbol' ----值是符号
五、undefined和null区别?
undefined:使用var/let声明变量未初始化时。
null:空对象指针
建议初始化使用null而不是undefined,因为null表示空对象指针,保存一个对象的引用(这也是typeof返回Object的原因),而undefined变量未声明和未初始化都显示它。
null == undefined //true undefined派生自null