`

ECMAscript 5运行模式:严格模式strict mode

 
阅读更多

strict mode是什么? 
         除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。这种模式使得Javascript在更严格的条件下运行,体现了Javascript更合理、更安全、更严谨的发展方向。

有什么用?
       - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  - 消除代码运行的一些不安全之处,保证代码运行的安全;
  - 提高编译器效率,增加运行速度;
  - 为未来新版本的Javascript做好铺垫。

 

调用方法

1.针对整个脚本文件:放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。

2.针对单个函数:将"use strict"放在函数体的第一行,则整个函数以"严格模式"运行。

<script>
   "use strict";
   console.log("这是严格模式。");
</script>
//整个脚本调用的变更写法:整个脚本文件放在一个立即执行的匿名函数中,利于文件合并
(function (){
    "use strict";
    console.log("整个脚本严格模式的变更写法");
})();
function strict(){
   "use strict";
   return "这是严格模式。";
}

 

严格模式下要求

1.变量都必须先用var命令声明,然后再使用。

2.对动态绑定做了一些限制。某些情况下,只允许静态绑定。

              属性和方法到底归属哪个对象,在编译阶段就确定。这样做有利于编译效率的提高,也使得代码更容易阅读,更少出现意外。

    (1)禁止使用with语句

    (2)创设eval作用域

3.增强了安全措施

    (1)禁止this关键字指向全局对象

 

function f(){
    return !this;
} // 返回false,因为"this"指向全局对象,"!this"就是false
function f(){ 
    "use strict";
    return !this;
} // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

    (2)禁止在函数内部遍历调用栈 

4.禁止删除变量:只有configurable设置为true的对象属性,才能被删除。

5.显示报错:

       对一个对象的只读属性进行赋值会报错。

       对禁止扩展的对象添加新属性,会报错。

       删除一个不可删除的属性,会报错。

6.重名错误

     (1)对象不能有重名的属性

     (2)函数不能有重名的参数

7.禁止八进制表示法:不像正常模式整数的第一位如果是0,表示这是八进制数,会报错。

8.arguments对象的限制

    (1)不允许对arguments赋值

    (2)arguments不再追踪参数的变化

    (3)禁止使用arguments.callee

9.函数必须声明在顶层:只允许在全局作用域或函数作用域的顶层声明函数,不允许在非函数的代码块内声明函数。

10.新增一些保留字:implements, interface, let, package, private, protected, public, static, yield。

整理自 javascript严格模式讲解

分享到:
评论

相关推荐

    ECMAScript 5严格模式(Strict Mode)介绍

    严格模式(Strict Mode)是ECMAScript 5的新特性,它允许你把整个程序,或者某个函数,放置在“严格”的操作语境中。这种严格的语境会防止某些特定的操作并抛出更多的异常。 虽然ECMAScript 5对ECMAScript 3是向下...

    在JavaScript中使用严格模式(Strict Mode)

    主要介绍了在JavaScript中使用严格模式(Strict Mode),除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。,需要的朋友可以...

    理解javascript中的严格模式

    我们平时写的JavaScript代码一般都运行在正常模式中的,除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。看名字就知道,这种模式会让JavaScript在更严格的环境中运行。 包括IE ...

    JavaScript 严格模式(use strict)

    JavaScript 严格模式(strict mode)即在严格的条件下运行。 使用 “use strict” 指令 “use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。 它不是一条语句,但是是一个字面量表达式,在 JavaScript ...

    Javascript的严格模式strict mode详细介绍

    “严格模式”(strict mode)是ECMA-262 Edition 5定义的新语法,表示要用严格的Javascript语法来执行,有一些过去惯用的写法就会抛出SyntaxError异常,例如:1.变量前没有用var宣告2.使用八进制语法:var n = 023和...

    深入理解javascript严格模式(Strict Mode)

    ECMAScript5中引入的严格模式,通过让JavaScript运行环境对一些开发过程中最常见和不易发现的错误做出和当前不同的处理,来让开发者拥有一个”更好”的JavaScript语言。很长一段时间内,由于只有Firefox支持严格模式,我...

    跟我学习javascript的严格模式

    除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立”严格模式”的目的,主要有以下几个: 消除Javascript语法的...

    JavaScript严格模式详解

    除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立”严格模式”的目的,主要有以下几个:  a - 消除Javascript...

    js判断浏览器是否支持严格模式的方法

    除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。这篇文章给大家详细介绍了js判断浏览器是否支持严格模式的方法,有需要...

    JavaScript严格模式下关于this的几种指向详解

    除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。下面这篇文章主要给大家介绍了在JavaScript严格模式下关于this的几种指向的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧...

    JavaScript起点(严格模式深度了解)

    严格模式(Strict Mode)是ECMAScript5新增的功能。ECMAScript5虽然可以向后兼容ECMAScript3,但如果使用严格模式,哪些ECMAScript5“不在建议使用”的ECMAScript3语法功能将会被全部进制,如果出现就会抛出一行。引入...

    JavaScript的strict模式与with关键字介绍

    2009年12月,...ECMAScript 5在目标上没有那么雄心勃勃,除去新增了对JSON的支持和反射的更全面的控制,一项重要改进就是引入“严格模式”(strict mode)。在此模式下,ECMAScript的语法变得更严格,使得原先

    2.1 认识script和基本数据类型

    2.1 元素 ... async: 表示应立即下载脚本,但不应妨碍页面中的而其他操作,比如下载资源或等待...ECMAScript5引入严格模式的概念(strict mode),严格模式是为JavaScript定义了一种不同的解析和执行模型。启用严格模式:

    Vue+webpack+Element 兼容问题总结(小结)

    项目中用到了Vue.js和Elenment-UI Vue官方文档中给出明确范围:Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ... IE9:支持除ECMAScript 5 Strict Mode外的e

    harmonyos2-introduction-to-es6-immersive-alum:介绍-es6-immersive-alum

    和声2 ES6 介绍 目标 描述 ES6 的主要新特性 ...旁白:严格模式 您可能还没有遇到过(至少是知道的),但是 ES5 有一种方法可以选择使用名为 . 您可以在上面的链接中了解严格模式的来龙去脉——通常,

    overture:一个基于 acorn 的小型、快速、基于 JavaScript 的 JavaScript 解析器

    序曲 JavaScript 中的快速 JavaScript 解析器。... // influences support for strict mode, the set of reserved words, and // support for getters and setter. ecmaVersion: 5, // Turn o

    javascript之with的使用(阿里云、淘宝使用代码分析)

    记得还在懵懂学习JavaScript基础之时,坊间便有传言“with语句是低效率语句,若非必要,请不要使用该语句”,同时, ECMAScript 5 的strict mode下是禁止使用with语句的,所以一直以来我对with语句一直没啥好感。...

Global site tag (gtag.js) - Google Analytics