嗨,大家好我試圖讓使用JSLint,我得到'使用嚴格'的警告,並將其添加到函數後,我仍然得到缺少'嚴格'聲明使用「嚴格使用」,但仍然得到警告
fs.readFile('file', 'utf8', function (err, data) {
if (err) { "use strict"; throw err; }
var obj = JSON.parse(data);
});
我很好奇我在做什麼錯?
嗨,大家好我試圖讓使用JSLint,我得到'使用嚴格'的警告,並將其添加到函數後,我仍然得到缺少'嚴格'聲明使用「嚴格使用」,但仍然得到警告
fs.readFile('file', 'utf8', function (err, data) {
if (err) { "use strict"; throw err; }
var obj = JSON.parse(data);
});
我很好奇我在做什麼錯?
我對此沒有100%正面評價,但我只使用過'use strict';
在給定.js文件的頂部,未嵌入代碼中。這樣做後我還沒有得到警告。也許這就是jslint尋找它的地方。
此外,看着它的文檔,use strict
應作用域要麼整個腳本,(文件的頂部)或給定函數(函數的頂部,左大括號之後)。所以不管jslint的能力如何,這個應該是固定的。
"use strict"
指令的位置是問題所在。
用途:
// Top of script file
"use strict";
/* ... code ... */
或者:
function b() {
"use strict";
/* ... code ... */
}
你使用它的if
分支的塊中。
這不僅僅是常見的,它是規則! ''使用strict';'必須是文件的第一條語句,或者函數的第一條語句才能生效。 – hobbs 2014-12-02 15:28:36
@hobbs是正確的 - 否則它會被網頁瀏覽器忽略,而功能執行方式不同。請修復這個答案。 – 2014-12-02 15:29:12
對不起 - 已刪除評論;錯過了你所說的「功能的第一個陳述」。試圖看看@BenjaminGruenbaum不喜歡的alexfreiria的回答有什麼問題。 alexfreiria的編輯只是添加'use strict'鏈接到MDN;我沒有看到答案的任何錯誤。 – ruffin 2014-12-02 16:01:12
在內部函數的第一行(在if語句之前)移動''use strict''',這應該可以解決問題 – BeNdErR 2014-12-02 15:27:02