`

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严格模式:最佳实践与应用指南

    为了解决这些问题,ECMAScript 5标准引入了一个新的特性——严格模式(Strict Mode)。通过启用严格模式,开发者可以更好地控制自己的代码,并避免一些常见的陷阱。 #### 二、严格模式概述 ##### 2.1 定义 严格...

    前端开源库-strict-mode

    1. **错误检测**:严格模式能帮助开发者尽早发现潜在的错误,比如变量未声明就使用、删除不可删除的属性等。这些在非严格模式下可能会默默忽略的错误,在严格模式下会立即报错,有利于提高代码质量。 2. **性能优化...

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

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

    Javascript 严格模式详解

    这一行指令告诉JavaScript引擎应以严格模式运行后续的代码。需要注意的是,一旦在一个脚本或函数中启用了严格模式,该模式将应用于整个脚本或函数,而不能仅限于其中的一部分代码。 #### 严格模式的特点 ##### ...

    前端开源库-strict-mode.zip

    在前端开发领域,"严格模式"(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的严格模式

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

    JavaScript严格模式详解

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

    javascriptEcma5

    3. **八进制表示法**:严格模式禁止使用八进制数字,如`010`会被解析为十进制的10。 4. **delete操作**:当configurable属性设置为false时,试图删除变量、函数或属性会导致错误。同样,删除不可扩展对象上的属性也...

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

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

Global site tag (gtag.js) - Google Analytics