📜  什么是 JavaScript 严格模式,我们如何启用它?

📅  最后修改于: 2022-05-13 01:56:13.831000             🧑  作者: Mango

什么是 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)

输出: