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 ...
随机推荐
- 三言两语聊Python模块–文档测试模块doctest
doctest是属于测试模块里的一种,对注释文档里的示例进行检测. 给出一个例子: splitter.pydef split(line, types=None, delimiter=None): &q ...
- 基于FPGA的电压表与串口通信(上)
实验原理 该实验主要为利用TLC549采集模拟信号,然后将模拟信号的数字量通过串口发送到PC上上位机进行显示,使用到的TLC549驱动模块在进阶实验已经使用到了,串口模块在基础实验也已经使用到了,本实 ...
- android之Activity回传数据
约定:当Activity发生跳转时将原来的Activity成为父Activity,将新出现的Activity成为子Activity. 情景设置 下面是个发短信的Activity 当我们点击图中的+按钮 ...
- SharedPreferences保存数据
1.使用SharedPreferences保存数据方法如下: //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences= ...
- python环境搭建-在Windows上安装python3.5.2
在Windows上安装Python3.5.2 首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.5.2对应的64位安装程序或32位安装程序(网速慢的同学 ...
- Day Seven(Beta)
站立式会议 站立式会议内容总结 331 今天: 1)阅读html 5+文档 未来走h5路线 2)restful,未来开发接口 3)h5+demo运行 4)get 代码:a||(a=as); 5)js ...
- Beta版本冲刺———第七天
会议照片: 项目燃尽图: 1.项目进展: 明天就验收了,今天做的是对项目的所有功能进行复查(由郭怡锋和洪大钊负责); 对于新增的功能:排行榜和撤销一步依然没有做出来.
- 开发错误记录8:Unable to instantiate application com
开发错误记录8:Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication 这是因为在And ...
- Android网络开发之实时获取最新数据
在实际开发中更多的是需要我们实时获取最新数据,比如道路流量.实时天气信息等,这时就需要通过一个线程来控制视图的更新. 示例:我们首先创建一个网页来显示系统当前的时间,然后在Android程序中每隔5秒 ...
- 学习Spring(三) 设置Bean作用域
Spring中几种不同的作用域 Singleton 每个Spring IoC容器中创建一个Bean实例 Prototype 每次请求时创建一个新的Bean实例 Request 为 ...