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严格模式讲解
相关推荐
严格模式(Strict Mode)是ECMAScript 5的新特性,它允许你把整个程序,或者某个函数,放置在“严格”的操作语境中。这种严格的语境会防止某些特定的操作并抛出更多的异常。 虽然ECMAScript 5对ECMAScript 3是向下...
为了解决这些问题,ECMAScript 5标准引入了一个新的特性——严格模式(Strict Mode)。通过启用严格模式,开发者可以更好地控制自己的代码,并避免一些常见的陷阱。 #### 二、严格模式概述 ##### 2.1 定义 严格...
1. **错误检测**:严格模式能帮助开发者尽早发现潜在的错误,比如变量未声明就使用、删除不可删除的属性等。这些在非严格模式下可能会默默忽略的错误,在严格模式下会立即报错,有利于提高代码质量。 2. **性能优化...
主要介绍了在JavaScript中使用严格模式(Strict Mode),除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。,需要的朋友可以...
这一行指令告诉JavaScript引擎应以严格模式运行后续的代码。需要注意的是,一旦在一个脚本或函数中启用了严格模式,该模式将应用于整个脚本或函数,而不能仅限于其中的一部分代码。 #### 严格模式的特点 ##### ...
在前端开发领域,"严格模式"(Strict Mode)是一个重要的概念,它主要应用于JavaScript代码中。严格模式是一种特殊的运行模式,旨在提供更安全、更严格的编程环境,帮助开发者避免一些常见的错误并提升代码质量。在...
我们平时写的JavaScript代码一般都运行在正常模式中的,除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。看名字就知道,这种模式会让JavaScript在更严格的环境中运行。 包括IE ...
JavaScript 严格模式(strict mode)即在严格的条件下运行。 使用 “use strict” 指令 “use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。 它不是一条语句,但是是一个字面量表达式,在 JavaScript ...
“严格模式”(strict mode)是ECMA-262 Edition 5定义的新语法,表示要用严格的Javascript语法来执行,有一些过去惯用的写法就会抛出SyntaxError异常,例如:1.变量前没有用var宣告2.使用八进制语法:var n = 023和...
除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立”严格模式”的目的,主要有以下几个: 消除Javascript语法的...
除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立”严格模式”的目的,主要有以下几个: a - 消除Javascript...
3. **八进制表示法**:严格模式禁止使用八进制数字,如`010`会被解析为十进制的10。 4. **delete操作**:当configurable属性设置为false时,试图删除变量、函数或属性会导致错误。同样,删除不可扩展对象上的属性也...
严格模式(Strict Mode)是ECMAScript5新增的功能。ECMAScript5虽然可以向后兼容ECMAScript3,但如果使用严格模式,哪些ECMAScript5“不在建议使用”的ECMAScript3语法功能将会被全部进制,如果出现就会抛出一行。引入...