1、JavaScript中,函数及变量的声明都将被提升到函数的最顶部,也就是说变量可以先使用后声明。
2、JavaScript初始化不会提升。
注:通常我们在每个作用域开始前声明这些变量,这也是正常的JavaScript解析步骤,易于理解。
另外,JavaScript严格模式不允许使用未声明的变量。
其实,我们理解了js的解析机制就行,遇到script标签js就进行预解析,将变量var和function声明提升,
但不会执行function。
JavaScript 严格模式(use strict)
它是字面量表达式,在JavaScript旧版本中会被忽略。
"use strict"只允许出现在脚本或函数的开头。
1、使用严格模式的好处
(1)消除代码运行的一些不安全之处,保证代码运行的安全
(2)提高编译器效率,增加运行速度
(3)为未来新版本的JavaScript做好铺垫
2、严格模式的限制
(1)不允许使用为声明的变量
(2)不允许删除变量或对象
(3)不允许删除函数
(4)不允许变量重名
(5)不允许使用八进制
(6)不允许使用转义字符
(7)不允许对只读属性赋值
(8)不允许对使用getter方法读取的属性进行赋值
(9)不允许删除一个不允许删除的属性
(10)变量名不能使用“eval”、“arguments”字符串
(11)由于一些安全原因,在作用域eval()创建的变量不能被调用
(12)禁止this关键字只想全局对象