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 ...
随机推荐
- [转]Android Studio创建Xposed模块项目时BridgeApi的正确添加方式
使用Android Studio创建的空项目作为Xposed Module App,对于Api Jar包的引用方式,一开始是按照傻瓜式Jar Lib的处理方式,复制XposedBridgeApi-54 ...
- 自己画WinForm 皮肤包括默认控件
好久没来博客园,今天捣鼓到现在就是为了把之前的皮肤控件完善好, 之前也看了很多技术文章,大多数都是自己重写系统控件实现换肤,几乎没有像东日的(IrisSkin)控件一样 添加一个组件 把系统的皮肤全换 ...
- Python 处理数据库返回结果
游标执行后返回的结果都只是数据,但是不带有列名标识.这里需要处理2个问题: 将返回的数据映射到每一列上 当返回的结果很大的时候,需要使用迭代器来提升性能. 解决上面的2个问题,在python里面可以采 ...
- 图片上传和显示——上传图片——上传文件)==ZJ
http://www.cnblogs.com/yc-755909659/archive/2013/04/17/3026409.html aspx上传 http://www.cnblogs.com/mq ...
- mysql性能优化-慢查询分析、优化索引和配置
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
- 0930MySQL中实现高性能高并发计数器方案(例如文章点击数)
转自http://www.jb51.net/article/56656.htm 这篇文章主要介绍了MySQL中实现高性能高并发计数器方案,本文中的计数器是指如文章的点击数.喜欢数.浏览次数等,需要的朋 ...
- XML与 HTML
XML是E4X中定义的一个重要的新类型,侧重于如何结构化描述信息,用它来表现XML结构中任何独立的部分,是一种用于标记电子文件使其具有结构性的标记语言. XML语言被设计用来描述数据,它的焦点是数据的 ...
- Android大神博客
Trinea 收藏级,开源项目分析等 Android开发周刊Android各种知识 郭霖 http://blog.csdn.net/guolin_blog?viewmode=contents 鸿洋 ...
- 使用fiddler查看https请求
首先点击菜单栏Tools>>>Fiddler Options>>>HTTPS 把Decrypt HTTPS Traffic 复选框勾选上 勾上之后,会弹窗提示你. ...
- 【USACO 2.2】Runaround Numbers
找出第一个大于n的数满足:每一位上的数都不同,且没有0,第一位开始每次前进当前这位上的数那么多位,超过总位数就回到开头继续往前进,最后能不能每个位都到过一次且回到第一位,$n<10^9$. 暴力 ...