JavaScript 严格模式

JavaScript 严格模式

JavaScript是一种动态语言,即从变量到代码本身,每个JavaScript组件都是动态的。通过JavaScript,您可以在运行时创建变量,更改其数据类型,创建新函数或替换现有逻辑。换句话说,在使用JavaScript时,开发者几乎完全控制。为什么是几乎?有一句著名的说法:

“伴随着巨大的力量而来的是巨大的责任。” —— Ben Parker

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.
  • 注意: 你可能会问为什么错误信息中说 unqualifiedJavaScript 提供了一个功能,你可以将对象的属性定义为可删除的,这样就可以在严格模式下删除该属性。
  • 使用保留关键字作为变量名: 与大多数其他语言不同,JavaScript 允许在变量名中使用保留关键字,在严格模式下是不允许的。

来源:

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

输出:

Uncaught SyntaxError: Unexpected eval or arguments in strict mode.

参数名重复: 与大多数其他编程语言不同,JavaScript允许使用重复的参数名,但在严格模式下是不被允许的。来源:

示例:

<script>
    // Normal mode
    function myFunc(a, a){
        console.log(a);
    }
     
    myFunc(0, 10);
</script>

输出结果:

10

示例:

<script>
    // Strict mode
    "use strict"; // Turn on strict mode.
     
    function myFunc(a, a){
    console.log(a);
    }
     
    myFunc(0, 10);
</script>

输出结果:

Uncaught SyntaxError: Duplicate parameter name not allowed in this context

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程