Dotcpp  >  编程教程  >  JavaScript基础语法及数据类型  >  JS严格模式实例

JS严格模式实例

点击打开在线编译器,边学边练

严格模式对JavaScript的语法做了一些改变,引入了一些限制和更严格的规则。

具体实例:

下面是一些严格模式相对于普通模式的语法改变:

1.变量必须先声明后使用:

在严格模式中,变量必须通过var、let或const关键字进行声明,否则会抛出ReferenceError。而在普通模式中,如果没有用关键字声明变量,JavaScript会将其默认为一个全局变量。

"use strict";
v = 1; // 在严格模式下,使用未声明的变量会导致错误:ReferenceError: v is not defined
console.log(v); // 这行代码不会执行到,因为之前的赋值语句已经抛出了错误
// 在普通模式下,上述代码会正常执行,并将变量 v 视为全局变量

2.禁止删除变量:

在严格模式中,使用delete操作符删除变量会报错。而在普通模式中,delete操作符可以用于删除对象的属性或数组的元素。

"use strict";
var x = 10;
console.log(x); // 输出:10
delete x; // 在严格模式下,会导致错误:SyntaxError: Delete of an unqualified identifier in strict mode.
console.log(x); // 删除操作不会成功,输出:10

3. 函数中不允许有同名的参数

在严格模式下,如果函数中有两个或多个同名参数,则会抛出语法错误,而在普通模式下则不会

function square(a, a) {
  return a * a;
}
console.log(square(2, 3)); // 在严格模式下,会报错:SyntaxError: Duplicate parameter name not allowed in this context

4. eval 语句的作用域是独立的

在严格模式下,eval 语句本身就是一个局部作用域,并且通过 eval 语句生成的变量只能在 eval 语句内部使用:

"use strict";
var x = 10;
function test() {
  var x = 5;
  eval("var y = 20;");
  console.log(y); // 在严格模式下,会导致错误:ReferenceError: y is not defined
}
test();

在上述例子中,eval 语句创建了一个变量 y,但在严格模式下,它只能在 eval 语句内部使用。在尝试在 eval 外部访问变量 y 时,会导致 ReferenceError 错误。

 



本文固定URL:https://www.dotcpp.com/course/1300

上一课:

JS严格模式介绍

下一课:

JS严格模式实例

JavaScript教程
第一章 JavaScript入门
第二章 JavaScript基础语法及数据类型
第三章 JavaScript函数
第四章 JavaScript类
第五章 JS高级教程
第六章 JS Window
第七章 JS库
Dotcpp在线编译      (登录可减少运行等待时间)