最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:
第1行问题1:缺少"使用严格"声明.
做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.
那么它是"use strict";什么,它意味着什么,它是否仍然相关?
当前的任何浏览器都会响应"use strict";字符串还是将来使用?
我正在使用"使用严格"的函数形式,并且不希望Babel在翻译后添加的全局形式.问题是我使用的是一些没有使用"use strict"模式的库,并且在脚本连接后可能会抛出错误
我在 tsconfig.json 中打开了严格模式。我无法按照编译器的意愿改变代码的某些部分。有没有一种方法可以降低严格性来标记特定文件或更好的代码块,而不是关闭整个项目的设置?
所以我在想这样的事情。
function foo() {
// implicitAny not allowed here
/// noImplicitAny false
// implicitAny allowed here
/// noImplicitAny true
}
Run Code Online (Sandbox Code Playgroud)
我认为三重破折号指令可能会有所帮助,但它们似乎没有帮助。
谢谢 :-)
我正在ES5中编写ES Harmony Symbol/ 的实现Name.我将使用该名称Symbol,但我希望浏览器Symbol在它已经存在的情况下(在未来的浏览器中)使用任何预先存在的名称.我希望我的代码符合ES5严格要求并可移植到其他项目中.
这是(非常多的)在ES3/ES5非严格中做我想做的事情的一种方式:
(function() {
// If Symbol already exists, we're done.
if(typeof Symbol != 'undefined') return;
// This becomes global because it wasn't declared with var
Symbol = function() {
// ...
};
})();
Run Code Online (Sandbox Code Playgroud)
但是,它不是ES5严格兼容的,因为Symbol没有明确定义.
实现此window目的的其他方法包括访问object(window.Symbol = ...),但这也不好,因为我不希望我的代码假设它在浏览器环境中运行.
如何在ES5中严格执行此操作?
javascript ×3
use-strict ×2
babeljs ×1
ecmascript-5 ×1
jshint ×1
jslint ×1
syntax ×1
typescript ×1