严格模式

一、严格模式的主要目的

1、消除javascript语法的不合理,不严谨之处,减少怪异行为;

2、消除代码运行的不安全之处,保证代码运行的安全;

3、提高编译器效率,增加运行速度;

4、位未来版本的javascript做好铺垫。


二、进入标志

“use strict”;


三、调用方式

1、针对整个脚本文件:将“use strict”放在脚本文件的第一行,则整个脚本都将以严格模式运行,若这行语句不在第一行,则无效(缺点,不利于js文件的合并)

2、针对单个函数:将“use strict”放在函数体的第一行,则整个函数以严格模式运行。

3、脚本文件的变通写法:借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数中。

(function(){
“use strict”
//some code here
})();


四、语法和行为的改变

1、全局变量的声明

正常模式中,一个变量没有声明就赋值,默认是全局变量。严格模式的全局变量必须显示声明。

2、静态捆绑

动态捆绑:属性和方法到底属于哪一个对象,不是在编译时确定的,而是在运行时确定的。严格模式对动态捆绑做了一些限制,只允许静态捆绑,在编译时确定属性和方法输入哪个对象。这样有理由编译效率的提高,使代码容易阅读,少出意外。

1)禁用with语句

2)正常模式下,Javascript语言有两种变量作用域(scope):全局作用域和函数作用域。严格模式创设了第三种作用域:eval作用域。

正常模式下,eval语句的作用域,取决于它处于全局作用域,还是处于函数作用域。严格模式下,eval语句本身就是一个作用域,不再能够生成全局变量了,它所生成的变量只能用于eval内部。

 "use strict";
  var x = 2;
  console.info(eval("var x = 5; x")); // 5
  console.info(x); // 2
3增强的安全措施
禁止this关键字指向全局对象、禁止在函数内部遍历调用栈、严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值