ECMAScript严格模式简介
写在前面
大家都知道使用"use strict"表示使用ECMAScript进行严格模式,使用"use strict"有两种方式
- 在文件头部写上它(使得整个脚本都使用严格模式)
- 在函数顶部写上它(只在函数内打开严格模式)

对于严格模式和非严格模式下,到底有哪些不同,下面我将一一道来。
变量
| 严格模式下 | 非严格模式下 |
| 不允许意外创建全局变量 | 允许省去var来创建全局变量 |
| 不能对变量调用delete操作符(也就是说使用delete来删除变量时操作会直接报错) | 允许使用delete但操作失败(也就是说使用delete来删除变量时操作时不会直接报错) |

对象
| 严格模式下 | 非严格模式下 |
| 不允许为只读属性赋值 | 允许为只读属性赋值 |
| 不允许对不可配置(nonconfiguratable)属性使用delete操作符 | 允许对不可配置(nonconfiguratable)属性使用delete操作符 |
| 不允许为不可扩展(nonextensible)的对象添加属性 | 允许为不可扩展(nonextensible)的对象添加属性 |
| 使用对象字面量时,属性名必须唯一 | 使用对象字面量时,属性名可以重复 |

函数
| 严格模式下 | 非严格模式下 |
| 函数参数不能重复 | 函数参数可以重复,如果重复的话,参数最终的取值为第二个,如果要取得第一个的话则得使用arguments |
| 函数参数和arguments是完全独立的 | 修改命名参数的值同时会反映到arguments对象当中 |
| 淘汰arguments.callee和arguments.caller | arguments.callee代表引用函数本身、arguments.caller调用当前引用函数的函数 |
|
不允许使用inplements、interface、let、package、private、protected、public、static、yield作为函数名 (因为这些是js当中的保留字并且已经在新的语法当中使用起来了) |
允许使用inplements、interface、let、package、private、protected、public、static、yield作为函数名 |

eval
在严格模式下在eval中不再创建变量或函数

可以在eval中声明变量和函数,但这些变量或函数只能被求值的特殊作用域中有效,随后就被销毁了。

eval和arguments
严格模式下禁止使用eval和arguments作为标识符,也不允许读写它们的值
非严格模式下可以重写eval,也可以给arguments赋值

抑制this
在非严格模式下使用apply和call方法时,null或undefined值被转换为全局对象
严格模式下,传进去的是什么,this就是什么

with
严格模式下已经废弃了with,但是非严格模式下可以使用with

parseInt的八进制
严格模式下去掉了javaScript的八进制字符量


ECMAScript严格模式简介的更多相关文章
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- 代理(Proxy)模式简介
Proxy 模式简介 代理模式的两个应用: 打开文档时加载大图片 例如:如果有个对象是一张很大的图片,而这张图片需要花费很长时间才能显示出来,那么当这个图片包含在文档中的后面时,使用编辑器或浏览器打开 ...
- (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介
Qt Model/View模式简介 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的 功能上的分离给了开发人员更大的弹性来定制数据项 ...
- Java的MVC模式简介
Java的MVC模式简介 MVC(Model View Control)模型-视图-控制器 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件 ...
- 转帖: Serverless架构模式简介
Serverless架构模式简介 原贴地址:https://blog.csdn.net/chdhust/article/details/71250099?utm_medium=referral&a ...
- WebSphere ILOG JRules 规则引擎运行模式简介
WebSphere ILOG JRules 规则引擎运行模式简介 引言 作为 JRules 的核心组件,规则引擎决定了在规则集的执行过程中,哪些业务规则会被执行,以及以何种顺序执行.理解并合理选择规则 ...
- MVVM模式的模式简介
MVVM模式简介 MVVM是Model.View.ViewModel的简写,这种模式的引入就是使用ViewModel来降低View和Model的耦合,说是降低View和Model的耦合.也可以说是是降 ...
- 代理(Proxy)模式简介
一.代理(Proxy)模式简介 代理模式是结构型模式. 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理对象要继承于抽象主题,并控制原对象的引用 二.简单例子 抽象主题类 ...
- WPF MVVM从入门到精通1:MVVM模式简介
原文:WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 W ...
随机推荐
- mac下CornerstoneSVN出错 Description : The working copy is locked due to a previous error
使用CornerStone工具update最新SVN代码报错:The working copy is locked due to a previous error,不仅无法上传,也无法更新,错误提示被 ...
- retrofit2中ssl的Trust anchor for certification path not found问题
在retrofit2中使用ssl,刚刚接触,很可能会出现如下错误. java.security.cert.CertPathValidatorException: Trust anchor for ce ...
- 自定义getElementByClass
DOM已经实现了getElementByClass,这个功能内部是怎么实现的呢 js代码及如何使用: function getElementByClass(className,parentNode){ ...
- mysql找回密码
1.打开任务管理器,关闭mysqld.exe 2.win+r运行cmd打开控制台,输入mysqld --skip-grant-tables启动服务器 3.win+r重新运行cmd打开控制台,输入mys ...
- 【心得】在脱离TFS的情况下,如何解除TFS绑定?
我们知道在有TFS的情况下,在文件-源代码管理-高级中可以解除TFS绑定. 但是如果我们出差去了,拿着笔记本电脑,打开解决方案的时候,会总是提示无法连接TFS,并且在源代码管理处尝试解除的时候也提示无 ...
- ClassLoader 详解及用途
ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 1.1 几个相关概念Class ...
- [转]FastJSON通过SerializeFilter定制序列化
原文地址:https://github.com/alibaba/fastjson/wiki/SerializeFilter 简介 SerializeFilter是通过编程扩展的方式定制序列化.fast ...
- Shell命令_if
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #if if [ 条件判断式 ] ...
- FastDFS搭建及java整合代码【转】
FastDFS软件介绍 1.什么是FastDFS FastDFS是用C语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高 ...
- oracle 11g 新特性UTL_TCP、UTL_HTTP 和 UTL_SMTP程序包发邮件
首先,创建一个 ACL: begindbms_network_acl_admin.create_acl (acl => 'utlpkg.xml', ---创建的访问控制列 ...