看來JS strict mode不允許聲明隱式全局變量,但不影響在條件(if)或循環(while)中定義的變量的訪問。在C#中,您無法訪問在外部條件或循環內聲明的變量。在JavaScript中,然而,以下工作:本地/ web服務器和JS Bin測試之間的好奇區分差異
"use strict";
(function() {
var mybool = true;
if (mybool) {
var test = "test;
console.log(test); //"test"
}
console.log(test); //"test"
}());
但breaks in JSBin和的jsfiddle,說test1
超出範圍。
爲什麼它在我的網絡服務器上工作,但在其他地方打破了?什麼是在條件和循環等範圍內的規則?JavaScript是否應該像C#這樣?
Yeap我在中途意識到這與'use strict'無關' - 我以爲JSBin可能使用'use strict;'這是導致兩者之間的問題。感謝你! – Growler 2014-11-20 21:00:19
@Growler:沒問題,很樂意幫忙 – 2014-11-20 21:02:43