相关疑难解决方法(0)

JavaScript中使用"严格"做什么,背后的原因是什么?

最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:

第1行问题1:缺少"使用严格"声明.

做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.

那么它是"use strict";什么,它意味着什么,它是否仍然相关?

当前的任何浏览器都会响应"use strict";字符串还是将来使用?

javascript syntax jslint use-strict

7339
推荐指数
29
解决办法
105万
查看次数

如何删除babel添加的全局"use strict"

我正在使用"使用严格"的函数形式,并且不希望Babel在翻译后添加的全局形式.问题是我使用的是一些没有使用"use strict"模式的库,并且在脚本连接后可能会抛出错误

javascript use-strict jshint babeljs

48
推荐指数
7
解决办法
4万
查看次数

您可以在单个文件或代码块上关闭严格模式等吗?

我在 tsconfig.json 中打开了严格模式。我无法按照编译器的意愿改变代码的某些部分。有没有一种方法可以降低严格性来标记特定文件或更好的代码块,而不是关闭整个项目的设置?

所以我在想这样的事情。

function foo() {
 // implicitAny not allowed here 

/// noImplicitAny false

 // implicitAny allowed here 

/// noImplicitAny true
}
Run Code Online (Sandbox Code Playgroud)

我认为三重破折号指令可能会有所帮助,但它们似乎没有帮助。

谢谢 :-)

typescript

8
推荐指数
1
解决办法
8202
查看次数

只有在ES5严格不存在的情况下才能定义全局变量?

我正在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 ecmascript-5

5
推荐指数
1
解决办法
1465
查看次数