关于JavaScript的:”使用jshint.com要求use strict”。这是什么意思?

Jshint.com requires “use strict”. What does this mean?

本问题已经有最佳答案,请猛点这里访问。

jshint.com是给的误差:

Line 36: var signin_found; Missing"use strict" statement.


在JS文件的顶部添加"use strict"(在.js文件的第1行):

1
2
3
4
5
6
7
8
9
"use strict";
...
function initialize_page()
{
    var signin_found;
    /*Used to determine which page is loaded / reloaded*/
    signin_found=document.getElementById('signin_button');
    if(signin_found)
{

有关StackOverflow的另一个问题中"使用严格"的详细信息:

在JavaScript中,"使用严格"是做什么的,它背后的推理是什么?

更新。

jshint.com有问题,它要求您在每个函数中放置"use strict",但应该允许它为每个文件全局设置它。

jshint.com认为这是错误的。

1
2
3
4
"use strict";    
function asd()
{
}

但是没有什么问题…

它希望您对每个函数都使用"严格的":

1
2
3
4
5
6
7
8
function asd()
{
   "use strict";
}
function blabla()
{
   "use strict";
}

然后说:

Good job! JSHint hasn't found any problems with your code.


这里是JShint维护人员。

JShint网站上使用的版本要求您在代码中使用函数级严格模式。很容易将其关闭,只需取消选中"代码未处于严格模式时发出警告"复选框:

jshint.com screenshot

为什么我们不允许@czarek建议的全球严格模式?因为您页面上使用的一些javascript文件可能不是严格模式兼容,而全局严格模式将破坏该代码。要使用全局严格模式,有一个名为globalstrict的选项。

希望有帮助!


我认为这是因为jshint试图"保护"我们不被意外地将严格模式分配给整个文件。而且用匿名函数包装代码,或者使用某种名称空间也是很好的。

例如,严格模式下的两种功能:

1
2
3
4
5
6
7
8
9
10
11
12
(function() {

  "use strict";

   function foo() {
        .....
   }

   function bar() {
        .....
   }
}());

jslint要求代码处于"严格模式"

要做到这一点,只需在代码顶部添加"use strict";