JavaScript 严格模式(use strict)

use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。

它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

"use strict" 的目的是指定代码在严格条件下执行。

严格模式下你不能使用未声明的变量。

  1. 不使用未声明的变量
  2. 不允许删除变量或对象
  3. 不允许删除函数
  4. 不允许变量重名
  5. 不允许使用8进制
  6. 不允许使用转义字符
  7. 不允许对只读属性赋值
  8. 不允许对一个使用getter方法读取的属性进行赋值
"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;            // 报错
  1. 不允许删除一个不允许删除的属性
  2. 变量名不能使用 "eval" 字符串,不允许arguments做变量名
  3. 由于一些安全原因,在作用域 eval() 创建的变量不能被调用:
"use strict";
eval ("var x = 2");
alert (x);               // 报错
  1. 禁止this关键字指向全局对象。
function f(){
    return !this;
} 
// 返回false,因为"this"指向全局对象,"!this"就是false

function f(){ 
    "use strict";
    return !this;
} 
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

保留关键字
为了向将来Javascript的新版本过渡,严格模式新增了一些保留关键字:

implements
interface
let
package
private
protected
public
static
yield

你可能感兴趣的:(JavaScript 严格模式(use strict))