最近,我通过Crockford的jslint 输入了一些我的笔记本代码, 它犯了以下错误:

第1行字符1:缺少“严格使用”的语句。

某些搜索, 我意识到有些人在他们的 javascript 代码中添加了“ 严格使用 ” ; 。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并没有揭示此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读该语句有关, 但我不知道效果会是什么 。

那么,什么是“严格使用”;什么是“严格使用”;一切,它意味着什么,它是否仍然相关?

当前的任何浏览器是否响应“ 严格使用 ” ; 字符串, 或是否未来使用 ?


当前回答

“严格使用”使javascript代码以严格的方式运行,这基本上意味着在使用前必须界定一切。 使用严格模式的主要原因是避免意外地在全球使用未定义的方法。

严格的方式,事情跑得更快, 一些警告或无声警告 扔出致命错误, 最好总是用它来做一个更干净的代码。

在ecma5中,广泛需要使用“严格使用”一词,在ecma6中,它默认是javascript的一部分,因此,如果使用es6,则不需要添加“严格使用”一词。

看看这些声明和Mdn的例子:

“ 使用严格” 指令在 javascript 1. 8. 5 (缩写文本 5 ) 中是新的“ 使用严格” 指令, 在 javascript 1. 8. 5 ( 缩写文本 5 ) 中, “ 使用严格” 指令不是一种声明, 而是一种字面表达, 先前版本的 javascript 忽略了它。 “ 使用严格” 的目的是表示代码应该在“ 严格模式” 中执行。 您不能使用未声明的变量。 例如, 使用“ 使用严格” 的例子: 功能的严格模式 : 同样, 要对函数使用严格模式, 请填写准确的 sta 。

(1) (1) 功能的严格模式

 function strict() {
     // Function-level strict mode syntax
     'use strict';
     function nested() { return 'And so am I!'; }
     return "Hi!  I'm a strict mode function!  " + nested();
 }
 function notStrict() { return "I'm not strict."; }

 console.log(strict(), notStrict());

2) 完全上标的严格模式

'use strict';
var v = "Hi! I'm a strict mode script!";
console.log(v);

3 (3) 转让给一个不可撤销的全球公司

'use strict';

// Assignment to a non-writable global
var undefined = 5; // throws a TypeError
var Infinity = 5; // throws a TypeError

// Assignment to a non-writable property
var obj1 = {};
Object.defineProperty(obj1, 'x', { value: 42, writable: false });
obj1.x = 9; // throws a TypeError

// Assignment to a getter-only property
var obj2 = { get x() { return 17; } };
obj2.x = 5; // throws a TypeError

// Assignment to a new property on a non-extensible object.
var fixed = {};
Object.preventExtensions(fixed);
fixed.newProp = 'ohai'; // throws a TypeError

您可以在 mdn 上阅读更多信息。

其他回答

“严格使用” ; 定义 Javarcamp 代码应使用“ 限制模式” 执行 。

“使用严格”指令在5版缩写文本中是新的“使用严格”指令。它不是一个声明,而是一个字面表达式,被先前版本的 Javascript 忽略。“使用严格”的目的是表示代码应该以“严格模式”执行。例如,不能使用未声明的变量。

所有现代浏览器都支持“严格使用”,

不利情况

如果开发商使用一个严格模式的图书馆, 但开发商通常使用正常模式工作,

更糟糕的是,由于开发商处于正常模式,他们没有被抛出额外错误的好处,因此错误可能会无声无息地失败。

此外,如上所列,严格模式阻止你做某些事情。

但有些开发商不喜欢这种限制, 并想使用语言的所有特征。

https://www.tutoricsteacher.com/javascript/javascript-strict

使用严格的使用来显示常见的重复错误, 以便以不同的方式处理错误, 并改变 Java 脚本的运行方式,

避免意外发生全球事故, 任何重复都不得消除, 消除这种胁迫性, 更安全的不可改变的电算错误() 。

您也可以阅读此文章的细节

如果人们担心使用严格使用,

浏览器中的 5 个“ 限制模式” 支持 。 这是什么意思 ? novogeek. com - krishna 的 Webb 。

讨论浏览器支持, 但更重要的是如何安全处理:

function isStrictMode(){
    return !this;
} 
/*
   returns false, since 'this' refers to global object and 
   '!this' becomes false
*/

function isStrictMode(){   
    "use strict";
    return !this;
} 
/* 
   returns true, since in strict mode the keyword 'this'
   does not refer to global object, unlike traditional JS. 
   So here, 'this' is 'undefined' and '!this' becomes true.
*/

添加“ 严格使用 ” 时, 下列情况将在脚本执行前丢弃语法器 :

为未来的缩略图版本铺路, 使用新保留的关键字之一( 为 缩略图 6 预览) : 执行、 接口、 let、 包包、 私有、 受保护、 公用、 静态和 产出。 如果 (a< b) { 函数 f ()\\\\\\\\\\\\\\\\\\\ n \ \ \ \\ \\\\\ n\\\ = 023; 此点指向全球对象 。 f () { "使用严格" { "使用" ; this. a = 1;} f () ; f () ; 在对象字典 {a: 1, b: 3, a: 7} 中声明一个属性名称的两倍相同名称 {a: 1, b: 3 a: 7}

资料来源:

Mdn javascript的严格模式以及为什么你应该在colin j. ihrg的博客(存档版本)上使用该模式。

从 w3 学校中引用:

使用“ 严格” 指令“ 使用严格” 指令在 javascript 1. 8. 5 ( 简写文本 5 ) 中是新的 。 它不是一个声明, 而是字面表达, 先前版本的 javascript 忽略了它。 “ 使用严格” 的目的是表示代码应该以“ 严格模式” 执行 。 您不能使用未声明的变量。 例如, 为何使用严格模式? 严格模式使得写“ 安全” javascript 更容易。 严格模式更改以前接受的“ 坏语法 ” 。

详情请查阅http://www.w3schools.com/js/js_stric.asp。