JavaScript 严格模式解析和使用示例

2021年3月13日16:47:25 发表评论 595 次浏览

JavaScript是一种动态语言, 也就是说, 从变量到代码本身, 每个Javascript组件都是动态的。借助JavaScript, 你可以在运行时中创建变量, 更改其数据类型, 创建新函数或替换现有逻辑, 或者换句话说, 在使用开发人员所使用的JavaScript时几乎完全控制。为什么差不多?有句名言

"拥有权利的同时也被赋予了重大的责任。" —本·帕克

JavaScript非常严格地遵循了这一原理, 而在神射手编码器的项目中, JavaScript的性能就像那里最好的编程语言之一一样, 在新手手中可能完全随机地工作。这种随机行为虽然是建立内在学习JavaScript愿望的组成部分, 但可能会增加某些复杂性, 尤其是在项目中使用时。 JavaScript的开发人员在ES5中添加了一项新功能, 称为严格模式, 这被认为禁止该语言的某些行为, 以减少随机行为并提高不良代码的可检测性。这些限制条件使代码更加安全, 并通常保持较高的编码标准。 JavaScript代码在引擎执行之前进行了优化, 使用严格模式可以看到开发人员现在可以编写高度优化的程序。它不仅是开发人员推荐的, 而且是工业编码标准的强制性包含。

语法如下:为了在脚本中使用严格模式, 我们只需要在下面的代码行中执行以下操作:严格模式又称为严格模式编译指示具有其自身的作用域, 并且可能会影响整个文件或单个方法(取决于它们)。

"use strict";

功能:现在我们知道, 严格模式基本上是JavaScript的一种模式, 它更加痴迷于正确的语法和其他逻辑范式, 而以前该语法和逻辑范式在没有太多探索的情况下就被允许使用。但是, 在严格模式下不再允许哪些语法和逻辑错误?以下是一些重要的简短列表。

自动全局变量声明:

这是JavaScript的最大问题之一, 如果你错误地使用了没有定义的变量, 则不使用严格模式, JavaScript不会引发错误, 而是会在全局范围内声明该变量, 这通常会导致随机性和不良输出。启用严格模式后, 它将引发常规参考错误, 通知你从未定义要使用的变量。

资源:

"use strict"; // Turn on strict mode.
a = 1;

输出如下:

Uncaught ReferenceError: a is not defined

注意:在JavaScript对象中, 变量也是变量, 因此还需要关键字" var", " let"或" const"来定义变量。

删除任何JavaScript元素:

与常规模式相比, 这是一个很大的变化, 因为在严格模式下, 不允许删除任何变量或函数。由于作用域是静态的, 并且在整个生命周期中都不会改变, 因此这使得代码更易于优化。

资源:

"use strict"; // Turn on strict mode.
var a = 1;
delete a;

输出如下:

Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.

注意:你可能会问为什么错误说明不合格? JavaScript提供了一些功能, 你可以在其中将对象的属性定义为可删除, 从而使该属性有资格在严格模式下删除。

使用保留关键字作为变量名:

与大多数其他程序不同, JavaScript允许使用保留关键字作为变量名, 在严格模式下是不允许的。

资源:

"use strict"; // Turn on strict mode.
var eval = 5;

输出如下:

Uncaught SyntaxError: Unexpected eval or arguments in strict mode.

参数名称重复:

与大多数其他程序不同, JavaScript允许使用重复的参数名称, 而在严格模式下则不允许使用。

资源:

"use strict"; // Turn on strict mode.
var eval = 5;

输出如下:

Uncaught SyntaxError: Unexpected eval or arguments in strict mode.

参考文献:

  • https://es5.github.io/
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: