写在前面

大家都知道使用"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严格模式简介的更多相关文章

  1. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  2. 代理(Proxy)模式简介

    Proxy 模式简介 代理模式的两个应用: 打开文档时加载大图片 例如:如果有个对象是一张很大的图片,而这张图片需要花费很长时间才能显示出来,那么当这个图片包含在文档中的后面时,使用编辑器或浏览器打开 ...

  3. (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介

    Qt Model/View模式简介 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的 功能上的分离给了开发人员更大的弹性来定制数据项 ...

  4. Java的MVC模式简介

    Java的MVC模式简介 MVC(Model View Control)模型-视图-控制器 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件 ...

  5. 转帖: Serverless架构模式简介

    Serverless架构模式简介   原贴地址:https://blog.csdn.net/chdhust/article/details/71250099?utm_medium=referral&a ...

  6. WebSphere ILOG JRules 规则引擎运行模式简介

    WebSphere ILOG JRules 规则引擎运行模式简介 引言 作为 JRules 的核心组件,规则引擎决定了在规则集的执行过程中,哪些业务规则会被执行,以及以何种顺序执行.理解并合理选择规则 ...

  7. MVVM模式的模式简介

    MVVM模式简介 MVVM是Model.View.ViewModel的简写,这种模式的引入就是使用ViewModel来降低View和Model的耦合,说是降低View和Model的耦合.也可以说是是降 ...

  8. 代理(Proxy)模式简介

    一.代理(Proxy)模式简介 代理模式是结构型模式. 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理对象要继承于抽象主题,并控制原对象的引用 二.简单例子 抽象主题类 ...

  9. WPF MVVM从入门到精通1:MVVM模式简介

    原文:WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 W ...

随机推荐

  1. 对react的几点质疑

    现在react.js如火如荼,非常火爆,昨天抽了一天来看了下这项技术.可能就看了一天,研究的不深入,但是我在看的过程中发现来了很多疑惑,这里拿出来和那家分享讨论以此共勉. 在我接触的前端以后,让我感觉 ...

  2. 20160307 - 双击打开 Js 扩展名的附件要保持留心

    Windows Script Host 技术是一门很老的技术,它让 Windows 的自带脚本 VBScript 和 JScript 可以操作 Windows ActiveX 对象,这样的脚本具有本地 ...

  3. [poj 3537]Crosses and Crosses(博弈论)

    题目:http://poj.org/problem?id=3537 题意:给你n个格子,两个人依次在n个格子的任意空位置画"X",谁如果画了一个后,3个X连在了一起,那么那个人就获 ...

  4. 【技术】JavaSE环境下JPA实体类自动注册

    在没有容器支持的环境下,JPA的实体类(Entity)一般要在persistence.xml中逐个注册,类似下面这样: <?xml version="1.0" encodin ...

  5. JavaScript返回上一级,并重新加载页面

    window.location.href = document.referrer;

  6. js中奇特的for循环写法

    //正常的for循环 for(var i=0;i<10;i++){ console.log(i); } //输出:1,2,3……10 //简写 for(var i=10;i--;){ conso ...

  7. myeclipse加入JavaEE

    1. 2. 3. 4.

  8. Tomcat6查看数据库的数据源信息

    打开tomcat6\conf  下的 context.xml

  9. canvas判断边距,反弹和拖拽的综合实例

    效果如图所示,可以实现精准拖拉和触界反弹 var canvas = document.getElementById("canvas"); var cxt = canvas.getC ...

  10. jQuery基础--样式篇(2)

    老套路,最开始上手就是写一个“Hello world!”,使用jQuery后获取元素十分简单,如下面获取div的对象,原生的javascript代码:document.getElementsByTag ...