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

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

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

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

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


当前回答

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

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

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

不利情况

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

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

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

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

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

其他回答

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

浏览器中的 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.
*/

我两分钱

严格模式的目标之一是允许更快地调试问题。 它会帮助开发者, 当某些错误的事情发生, 可能导致您网页的沉默和奇怪行为时, 它会提出例外, 从而帮助开发者。 当我们使用严格模式时, 代码会丢弃错误, 帮助开发者提前修正它 。

在严格使用后我学到的几件重要东西:

防止全球变量声明:

“ 严格” ; var tree1data = { name: 'banana tree', age: 100,leafcount: 100,leafcount: 100,000}; 函数树( 树类型) { var age; var lifcount; 年龄 = tree. age; 叶数 = kree.leafcount; 树名称 = tree. name; }; var tree1 = 新树( riet1data); 控制台. log( windowowow);

现在, 这个代码创建了全球范围的树名, 可以使用 window. nameoftree 访问 。 当我们严格使用这个代码时, 代码会丢弃错误 。

未标记的引用引用器: 未定义树名 。

以下列语句删除:

无法使用像丑化js这样的工具对语句进行简单化。 它们也会被折旧, 从未来的 Javarint 版本中删除 。

样本 :

“ 严格” ; var tree1data = { name: 'banana tree', 年龄: 100, 叶数: 100 000} ; 函数树( 树类型) { var 年龄; var 叶数; 年龄= 树类型. age; 叶数= 树类型.leafcount; // 树名称= 树类型. name; 对于 (var i = 0; i & lt; 2) { / let( leafcount = i) { { / * do something */} { (val i = 0; i & lt; 2; +u) { 和 (leafcount = i) { { {/ * do something} {; var tree1 = 新的树 (tree1data); { likefor.log( windo) 。

防止重复:

当我们有重复财产时,它是一种例外,

unacaute 语法解析器: 在严格模式下不允许以对象文字复制数据属性

“严格使用”; var 树1data = { 名称: “香蕉树 ” , 年龄: 100, 叶数: 100 000, 名称: “香蕉树 ” ;

很少有更多的人,但我需要获得更多这方面的知识。

John Revig写了个好摘要 写了个好摘要

这只是一个字符串,你放 在你的 javacript 文件( 在文件顶部或函数内部) 中, 看起来像这个 :

"use strict";

输入您的代码不应该对当前浏览器造成任何问题, 因为它只是一条字符串。 它可能会在未来对您的代码造成问题, 如果您的代码违反了 pragma 。 例如, 如果您目前拥有 Foo = “ bar ” 而不先定义 Foo , 您的代码将会开始失效... 在我看来这是件好事。

部分1: 缩略语 5 说明使用“严格使用”开关的递增使用 如何让缩略语执行者 清理大量刺略语的危险特征 而不突然打破世界上每个网站

当然,它也谈到很多这些错误的特征是什么,5 是如何修补这些错误的。

“严格”模式引入了5号标本中。

(function() {
  "use strict";
  your code...
})();

刻写“ 严格使用 ” ; 在您 js 文件的顶部打开严格的语法检查 。 它为我们执行以下任务 :

如果您试图指定给一个未声明变量, 则显示错误 。 如果您试图指定给一个未声明的变量, 则会阻止您覆盖密钥 js 系统库禁止某些不安全或易出错的语言功能。

个人功能内部的工程也严格使用。在代码中加入严格使用总是更好的做法。

浏览器兼容性问题 : “ 使用” 指令意在向后兼容。 不支持这些指令的浏览器将只看到一个字符串字典, 没有进一步引用。 因此, 它们会通过它继续前进 。