看来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