📜  JavaScript “use strict”

📅  最后修改于: 2020-09-27 08:41:39             🧑  作者: Mango

在本教程中,您将在示例的帮助下了解JavaScript“严格使用”语法。

 

'use strict';指出JavaScript代码应以“ 严格模式 “执行。这使得编写良好且安全的JavaScript代码更加容易。例如,

myVariable = 9;

在这里,myVariable是在未声明的情况下创建的。在JavaScript中,它用作全局变量。但是,如果在严格模式下使用此程序,则程序将引发错误。例如,

'use strict';

// Error
myVariable = 9;

上面的代码引发错误,因为未声明myVariable 。在严格模式下,必须先声明变量才能使用变量。

为了表明该程序处于严格模式下,我们使用了

'use strict';

在程序的顶部。

您可以通过添加'use strict';来声明严格模式'use strict';"use strict";在程序开始时。

在程序的开头声明严格模式时,它将具有全局作用域,并且程序中的所有代码都将以严格模式执行。

一些较旧的问题和错误无所作为或表现不同。使用'use strict';在这种情况下,程序顶部将引发错误。例如,使用变量而不声明它会在严格模式下引发错误。

注意 :您需要在程序开始时声明严格模式。如果您在某些代码下声明了严格模式,则该模式将无效。

例如,

console.log("some code");

// 'use strict' is ignored
// must be at the top
"use strict";

x = 21; // does not throw an error

功能严格模式

您还可以在函数内部使用严格模式。例如,

myVariable = 9;
console.log(myVariable); // 9

function hello() {

    // applicable only for this function
    'use strict';

    string = 'hello'; // throws an error
}

hello();

如果您使用'use strict';在函数内部, 函数内部的代码将处于严格模式。

在上面的程序中, 'use strict';hello() 函数内部使用。因此,严格模式仅在函数内部适用。

如您所见,在程序的开头,使用了myVariable而不进行声明。

如果您声明'use strict';在程序顶部,也不能在未在函数内部声明变量的情况下使用变量。例如,

// applicable to whole program
'use strict';

function hello() {
    string = 'hello'; // throws an error
}

hello();

注意 :严格模式不适用于带有{}大括号的语句。


严格模式下不允许的事情

 

1.不允许使用未声明的变量。

'use strict';

a = 'hello'; // throws an error

2. 不允许使用未声明的对象。

'use strict';

person = {name: 'Carla', age: 25}; // throws an error

3.不允许删除对象。

'use strict';

let person = {name: 'Carla'};

delete person; // throws an error

4.不允许重复参数名称。

"use strict";

function hello(p1, p1) { console.log('hello')}; // throws an error

hello();

5.不允许分配给不可写的属性。

'use strict';

let obj1 = {};

Object.defineProperty(obj1, 'x', { value: 42, writable: false });

// assignment to a non-writable property
obj1.x = 9; // throws an error

6.不允许分配给仅吸气剂的属性。

'use strict';

let obj2 = { get x() { return 17; } };

// assignment to a getter-only property
obj2.x = 5; // throws an error

7.不允许在不可扩展对象上分配新属性。

'use strict';

let obj = {};
Object.preventExtensions(obj);

// Assignment to a new property on a non-extensible object
obj.newValue = 'new value'; // throws an error

8.不允许使用八进制语法。

'use strict';

let a = 010; // throws an error

9.不允许使用变量名参数和eval。

'use strict';

let arguments = 'hello'; // throws an error

let eval = 44;

10. 您也不能在严格模式下使用这些保留的关键字。

implements interface let package private protected public static yield


严格模式的好处

使用严格模式:

  • 有助于编写更简洁的代码
  • 将以前接受的静默错误(语法错误)更改为真实错误并引发错误消息
  • 使编写“安全” JavaScript更加容易