什么是js的严格模式?

严格模式指的是使js在更为严格的条件下运行。严格模式的主要作用是规范我们写代码习惯,以及为js升级做好铺垫。

 如何使用严格模式?

<script>
//直接在代码开始写上''use strict
'use strict';
var a=123;
function f(){
//在函数体开始写上'use strict'
"use strict";
return !this;
}
</script>

严格模式特点:

1.不允许使用隐式声明的变量,会报错。
a=123;

2.不允许函数有相同的参数,对象有相同的属性。

var a=function(a,a){
alert(123);
};
"use strict";
  var o = {
    p: 1,
    p: 2
}; // 语法错误

3.不允许对只读属性赋值:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // 报错

4.禁止this关键字指向全局对象,也就是说this不能指向window顶层对象。

function f(){
  return !this;
}// 返回false,因为"this"指向全局对象,"!this"就是false
function f(){
  "use strict";
   return !this;
}// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

5.不允许使用保留关键字(implements, interface, let, package, private, protected, public, static, yield)作为变量名。js一直处于发展中,这些保留关键字将来可能用来实现相应的功能。所以不能使用。

6.创设eval作用域,在作用域 eval() 创建的变量不能在外部被调用
"use strict";
eval ("var x = 2");
alert (x);
05-11 19:58