什么是 JavaScript 严格模式,我们如何启用它?
JavaScript 是一种宽容的语言,因为它忽略了开发人员或程序员在代码中的愚蠢错误或错误,例如语句终止、变量声明、变量的错误数据类型、提升问题等等。有时这些错误会产生不寻常的结果,程序员或开发人员很难在像 1000 行代码这样的长代码中发现错误。所以需要一些开发人员知道他们的错误的东西,而不是 JavaScript 干扰或在这里做某事。为了消除这些问题,“ use Strict”应运而生。
严格模式是 ECMAScript 5 中的一项新功能,它允许您将程序或函数置于“严格”操作上下文中。这种严格的上下文会阻止执行某些操作并引发更多异常。声明“使用严格”;指示浏览器使用 Strict 模式,这是一种精简且更安全的 JavaScript 功能集。
示例 1:
- 索引.html
HTML
Document
Box clicked: 0 times
Javascript
const box = document.getElementById('box');
const click = document.getElementById('click-count');
//Not declared count here
count = 0;
box.addEventListener('click', function () {
count++;
console.log(count);
click.innerText = count + " ";
});
Javascript
Javascript
//function call before declare
operation(30, 40)
function operation(a, b) {
// undefined output because variable
console.log(subtract);
//hoisting works as c is declared as var.
//subtract variable is declared as var
//browser understand statement terminate
var subtract = a - b
console.log(subtract); // -10 output
//create error because add is not defined yet
console.log(add);
//because browser also dont know add is defined or not
//add is not declared
add = a + b;
console.log(add);
}
Javascript
"use strict"
const box = document.getElementById('box');
const click = document.getElementById('click-count');
//Not declared count here
count = 0;
box.addEventListener('click', function () {
count++;
console.log(count);
click.innerText = count + " ";
});
Javascript
const box = document.getElementById('box');
const click = document.getElementById('click-count');
// declared count here
var count = 0;
box.addEventListener('click', function () {
//non strict mode
"use strict"
count++;
//demo is not declared
demo = 100;
console.log(count);
click.innerText = count + " ";
});
Javascript
function xyz(a, a) {
'use strict';
console.log(a + a);
}
xyz(10, 20);
Javascript
"use strict"
var x = 3.14;
delete x;
console.log(x)
- 脚本.js
Javascript
const box = document.getElementById('box');
const click = document.getElementById('click-count');
//Not declared count here
count = 0;
box.addEventListener('click', function () {
count++;
console.log(count);
click.innerText = count + " ";
});
输出:
所以这里 count 变量没有在 JavaScript 代码中声明,但它可以正常工作而没有任何错误,因为 JavaScript 应该对开发人员宽松,所以实际上不要将变量创建为 var 或 const,然后实际上它会创建一个变量作为全局变量。
示例 2:
Javascript
输出:
示例 3:
Javascript
//function call before declare
operation(30, 40)
function operation(a, b) {
// undefined output because variable
console.log(subtract);
//hoisting works as c is declared as var.
//subtract variable is declared as var
//browser understand statement terminate
var subtract = a - b
console.log(subtract); // -10 output
//create error because add is not defined yet
console.log(add);
//because browser also dont know add is defined or not
//add is not declared
add = a + b;
console.log(add);
}
输出:
严格模式:最好是得到错误而不是放任它们去干扰。因此,这是一种在 JavaScript 中添加严格检查以减少错误的方法。现在使用它之后,JavaScript 不会自动为我们填充它,而是会产生错误。因此,开发人员现在能够轻松地修复他们的错误,而不是从 JavaScript 端获得意外结果,并且花费大量时间来修复这些错误,现在几乎所有浏览器都支持严格模式。
示例 4:让我们使用相同的示例 1,现在使用严格模式:
Javascript
"use strict"
const box = document.getElementById('box');
const click = document.getElementById('click-count');
//Not declared count here
count = 0;
box.addEventListener('click', function () {
count++;
console.log(count);
click.innerText = count + " ";
});
输出:
在这里它给出了一个错误,因为在使用严格模式后,count 已定义但未声明,因此现在对于 javascript 计数是未知的。现在javascript很容易识别错误。如果 count 被声明为 var 或 let 或 const 那么它工作正常。
让我们了解如何在 JavaScript 中启用严格模式。
我们可以通过编写以下简单语句在 JavaScript 代码中启用严格模式: 'use strict';或“使用严格”。
我们可以将严格模式应用于整个脚本或单个函数或代码段——
- 整个脚本的顶部是全局应用严格模式。
- 仅将其应用于特定函数是在函数内部。
它允许严格模式和非严格模式共存。因此,在需要在旧的现有 JavaScript 文件中添加新的 JavaScript 代码的地方很容易。
示例 5:
Javascript
const box = document.getElementById('box');
const click = document.getElementById('click-count');
// declared count here
var count = 0;
box.addEventListener('click', function () {
//non strict mode
"use strict"
count++;
//demo is not declared
demo = 100;
console.log(count);
click.innerText = count + " ";
});
输出:
严格模式的属性:
- 不允许重复值
示例 6:
Javascript
function xyz(a, a) {
'use strict';
console.log(a + a);
}
xyz(10, 20);
输出:
- 无法删除变量或删除无法在严格模式下应用
示例 7:
Javascript
"use strict"
var x = 3.14;
delete x;
console.log(x)
输出: