JavaScript 严格模式、库、框架与工具全解析
1. JavaScript 严格模式
严格模式为 JavaScript 带来了更严谨的代码规范,避免了一些常见的错误和潜在的安全问题。
1.1 函数参数与严格模式
ES6 引入了剩余参数、解构参数和默认参数等特性,增强了函数组织和定义参数的能力。但 ECMAScript 7 规定,使用这些高级参数特性的函数,其函数体内不能使用严格模式,否则会抛出错误,不过全局严格模式仍然允许使用。
// ok
function foo(a, b, c) {
"use strict";
}
// bad
function bar(a, b, c='d') {
"use strict";
}
// bad
function baz({a, b, c}) {
"use strict";
}
// bad
function qux(a, b, ...c) {
"use strict";
}
ES6 的新特性要求参数解析模式与函数体一致。由于在函数体内遇到 "use strict"
指令时,JavaScript 解析器需要在解析函数参数前检查函数体内的指令,这会增加复杂性。因此,ES7 引入此规定,让解析器在解析函数前明确操作模式。
1.2 使用 eval() 函数
eval()
函数在严格模式下有了重大升级,它不再会在包含它的上下文中创建变量或函数。