我发现为了让我的代码工作,我必须声明所有(或至少80%)我的变量并在本地实例化它们,即使我已经在范围函数中已经这样做了...为什么是这个?例如:
$(function() {
var cUnit, fUnit, temp, wind, humidity, weatherDescrpt, wData;
cUnit = true;
fUnit = false;
$("#fUnit").click(function() {
var cUnit = true;
var fUnit = false;
toggleTemp(cUnit,fUnit);
});
function setAttribute(wData) {
cUnit = true;
fUnit = false;
temp = displayTemp(wData.main.temp,fUnit);
}
});
UPDATE --- 我相信我终于找到了这个问题......如果toggleTemp()中的语句太多了......现在看起来不错了
答案 0 :(得分:0)
在你展示的例子中,你确实需要绝对没有局部变量($(function() {
$("#fUnit").click(function() {
toggleTemp(true, false);
});
function setAttribute(wData) { // looks like dead code that is called from nowhere
displayTemp(wData.main.temp, false);
}
});
参数除外):
$(function() {
const cUnit = true;
const fUnit = false;
$("#fUnit").click(function() {
toggleTemp(cUnit, fUnit);
});
function setAttribute(wData) {
displayTemp(wData.main.temp, fUnit);
}
});
当然,您可以(并且可能应该)将局部变量中的常量分解出来。但是,你只能 声明并在模块范围内分配它们,而不是其他地方:
unlist