最近,我通过Crockford的jslint 输入了一些我的笔记本代码, 它犯了以下错误:
第1行字符1:缺少“严格使用”的语句。
某些搜索, 我意识到有些人在他们的 javascript 代码中添加了“ 严格使用 ” ; 。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并没有揭示此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读该语句有关, 但我不知道效果会是什么 。
那么,什么是“严格使用”;什么是“严格使用”;一切,它意味着什么,它是否仍然相关?
当前的任何浏览器是否响应“ 严格使用 ” ; 字符串, 或是否未来使用 ?
严格模式使 v8 引擎具有严格的特性。 某些特性的简短示例 :
您可通过写作方式实现全球化 :
'use strict'; // strict mode enabled!
函数中包含 :
let myfunc = () => {
'use strict'; // strict mode enabled
b = 0; // broke
}
在使用变量之前必须声明变量(正常 imo):
var x;
x = '0'; // ok
y = ''; // not ok
已经启用 es6 功能( 取决于浏览器) , 因为节点 v4+ 很重要 。 在某些情况中, 性能更好 。
还有更多功能,请在这里检查更多功能
用于 ES6 模块的更新
本地缩略语模块(有进出口语句)和 ES6 类内部的缩略语模块, 严格模式总是被启用, 无法禁用 。
原始答案
这条关于刺写严格模式的文章可能会引起你的兴趣:John Revig - ecmaric 5 严格模式,json,等等。
引用一些有趣的部分:
严格模式是文稿 5 中的新特征, 允许您在“ 严格” 操作背景下放置一个程序或函数。 这种严格环境防止采取某些行动, 并丢弃更多例外 。
并且:
严格模式在几个方面有所帮助:它捕捉到一些常见的编码工具,抛出一些例外。当采取相对“不安全”的行动(例如进入全球对象)时,它会防止或丢出错误。它会禁用一些混淆不清或考虑不周的特征。
注意您也可以对整个文件应用“ 限制模式” ...... 或者您只能将其用于特定功能( 仍在引用 John Revig 的文章 ) :
// Non-strict code...
(function(){
"use strict";
// Define your library strictly...
})();
// Non-strict code...
如果你必须混合新旧代码和旧代码,
所以,我想这有点像“严格使用”在 Perl 中可以使用(比如这个名称? ) : 它可以帮助您减少错误, 通过检测更多的可能导致分裂的东西。
现在所有主要浏览器都支持严格模式 。
语句“ 严格使用 ” ; 指示浏览器使用严格模式, 即一个缩写和安全的 Javastrict 特征集 。
特征列表列表(并非详尽无遗)
不允许的全变量 。 (在变量名称中缺少 var 声明和打字符) 静态失效分配将会在严格模式下丢出错误( 指派 nan = 5 ;) 试图删除非可删除属性将会丢弃( 删除对象 . prototype) , 要求对象字典中的所有属性名称都是独特的( var x = {x1: 1, x1: 1, x1: 2}) 函数参数名称必须是独一无二的( 函数和( x, x) {...}) 禁止八语法( var x = 023; 一些 deds 错误地假定前的零 doe
[参考:严格模式,mozilla 开发者网络]
实例:
严格模式代码不能用别名来描述在其中创建的参数对象的属性
function show( msg ){
msg = 42;
console.log( msg ); // msg === 42
console.log( arguments[0] ); // arguments === 42
}
show( "Hey" );
// In strict mode arguments[i] does not track the value of
// the corresponding named argument, nor does a named argument track the value in the corresponding arguments[i]
function showStrict( msg ){
"use strict";
msg = 42;
console.log( msg ); // msg === 42
console.log( arguments[0] ); // arguments === "Hey"
}
showStrict( "Hey" );
我强烈建议每个开发商现在就开始使用严格模式。 有足够的浏览器支持严格模式,
显然,在最初的阶段,我们从未遇到过错误。 为了获得全部好处,我们需要在转换到严格模式后进行适当的测试,以确保我们掌握了一切。 当然,我们不只是在代码中严格使用,而且假设没有错误。 因此,语气是,是时候开始使用这个非常有用的语言功能来写更好的代码了。
例如,
var person = {
name : 'xyz',
position : 'abc',
fullname : function () { "use strict"; return this.name; }
};
jslint 是由 douglas crockford 撰写的调试器。 只需在您的脚本中粘贴, 它就能快速扫描您的代码中的任何明显问题和错误 。