Jshint.com要求"使用严格的"。这是什么意思?

时间:2011-11-12 19:34:16

标签: javascript jshint

Jshint.com提供错误:

  

第36行:var signin_found;缺少“使用严格”声明。

4 个答案:

答案 0 :(得分:36)

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

"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的另一个问题的更多关于“use strict”的内容:

What does "use strict" do in JavaScript, and what is the reasoning behind it?

更新。

jshint.com有问题,它要求你在每个函数中加入“use strict”,但是应该允许它为每个文件全局设置它。

jshint.com认为这是错误的。

"use strict";    
function asd()
{
}

但它没有任何问题......

它希望你对每个功能都使用“use strict”:

function asd()
{
    "use strict";
}
function blabla()
{
    "use strict";
}

然后它说:

  

干得好! JSHint没有发现您的代码有任何问题。

答案 1 :(得分:32)

JSHint维护者在这里。

JSHint--网站上使用的版本 - 要求您在代码中使用功能级严格模式。关闭它很容易,只需取消选中“代码不在严格模式时发出警告”复选框:

jshint.com screenshot

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

希望有所帮助!

答案 2 :(得分:10)

我认为这是因为jshint试图“保护”我们免受意外分配严格模式到整个文件。 最好用匿名函数包装代码,或使用某种命名空间。

e.g。两者都在严格模式下运行:

(function() {

   "use strict";

   function foo() {
        .....
   }

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

答案 3 :(得分:4)

JSlint要求您的代码处于'严格模式'

要执行此操作,只需将"use strict";添加到代码顶部即可。