注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

拥有自己的梦想,跟随心的召唤

平凡是福

 
 
 

日志

 
 

JavaScript 严格模式 'use strict'  

2015-06-30 17:02:31|  分类: JavaScript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ECMAScript 5 除了正常运行模式,添加了第二种运行模式:"严格模式"(strict mode),这种模式使JavaScript 在更严格的条件下运行。"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向。浏览器的支持情况可以参考 这里。从 Chrome23+、Firefox21+、IE10+ 开始支持严格模式。
一)启用严格模式
1)将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。如果这行语句不在第一行,则无效,整个脚本以"正常模式"运行。如果不同模式的代码文件合并成一个文件,这一点需要特别注意。
2)将"use strict"放在函数体的第一行,则整个函数以"严格模式"运行。
function strict(){
  "use strict";
  return "这是严格模式。";
}

二)严格模式下的一些行为改变收集
1)全局变量必须显式声明
在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明,否则抛出异常。
2)eval生成的变量只能用于eval内部,不能生成全局变量
正常模式下,Javascript语言有两种变量作用域(scope):全局作用域和函数作用域。
严格模式创设了第三种作用域:eval作用域。
正常模式下,eval语句的作用域,取决于它处于全局作用域,还是处于函数作用域。
严格模式下,eval语句本身就是一个作用域,不能生成全局变量,它所生成的变量只能用于eval内部。
3)禁止this关键字指向全局对象
使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。
4)禁止删除变量
严格模式下无法删除变量,只有configurable设置为true的对象属性,才能被删除。
5)对象不能有重名的属性
正常模式下,如果对象有多个重名属性,最后赋值的那个属性会覆盖前面的值。严格模式下,这属于语法错误。
6)函数不能有重名的参数
正常模式下,如果函数有多个重名的参数,可以用arguments[i]读取。严格模式下,这属于语法错误。
7)不允许对arguments赋值
8)函数必须声明在顶层
严格模式只允许在全局作用域或函数作用域的顶层声明函数。也就是说,不允许在非函数的代码块内声明函数。
9)新增保留字
严格模式新增了一些保留字:implements, interface, let, package, private, protected, public, static, yield。
使用这些词作为变量名将会报错。
此外,ECMAscript 5 本身还规定了另一些保留字(class, enum, export, extends, import, super)

参考:
  评论这张
 
阅读(318)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018