"use strict";
- 变量必须var声明,否则报错
a = 999; // Uncaught SyntaxError: Octal literals are not allowed in strict mode.
- 防止全局调用的函数里的this指向window,换而代表undefined
function test () { console.log(this); // undefined } test();
其他情况依旧是window
console.log(this); // window setTimeout(function () { console.log(this); // window }, 0);
- 函数参数禁止重名
function test (a, a) { console.log(1); // Uncaught SyntaxError: Duplicate parameter name not allowed in this context }
- 禁止删除变量(原只会默默失败,而不会报错 ),可删除对象属性
var a = 1; delete a; // Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
- 禁止数字八进制表示,可以表示十六进制
var a = 010; // Uncaught SyntaxError: Octal literals are not allowed in strict mode.