javascript严格模式

javascript运行模式有两种,除了平时使用的正常模式外,还有一种严格模式,顾名思义,就是在更严格的模式下运行。

严格模式的好处有很多:避免一些怪异行为以及不规范行为、提高编译效率等。

要使用严格模式只需要在当前执行环境的顶部写以下代码:

<script>
    'use strict';
</script>

一般在项目中是这样写的:

(function(){
  'use strict';
})()

这样有助于代码合并,并且不影响他人的代码。

下面说下严格模式的一些限制。

1、不允许未声明的全局变量。

str = 'hello';
str; //Uncaught ReferenceError: s is not defined

2、禁止使用with语句。

var o = {};
with(o){} //Uncaught SyntaxError: Strict mode code may not include a with statement

3、创建eval作用域。

var x = 2;
console.info(eval("var x = 5; x")); // 5
console.info(x); // 2

4、this的指向。

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

5、禁止删除变量,除非configurable设置为true。

var x;
delete x; // 语法错误
var o = Object.create(null, {'x': {
  value: 1,
   configurable: true
}});
delete o.x; // 删除成功

6、对象不能有重名的属性,函数不能有重名的参数。

var o = {
  p: 1,
  p: 2
}; // 语法错误
function f(a, a, b) { // 语法错误
  return ;
}

7、禁止使用arguments.callee。

var f = function() { return arguments.callee; };
f(); // 报错

还有很多个人觉得不太常用的在严格模式下会报错的语法,这里就不再赘述。

 参考自:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

转载于:https://www.cnblogs.com/11lang/p/6201795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值