【发布时间】:2013-05-16 07:12:42
【问题描述】:
美好的一天,我偶然发现了 JS 中变量范围的问题。 我有这样的功能
var address = ...; //it may be or may not be defined earlier.
// It is not the only variable passed to the function
function search() {
window.location.search = address;
}
但我需要确保已定义此变量,所以我这样做
function search() {
function check(value) {
if(!value) {
value = "1";
}
return value;
}
check(address);
window.location.search = address;
}
但有时我得到的是未定义的,传递给 window.location.search,因为 check() 确实正确返回了“1”;
你能指出我的错误吗?
[更新]
我应该早点说 - 我只是在寻找更好的方法来做到这一点。 如果检查会正确,当然很简单,但 $address 变量不是唯一的 你可以这样画
totaladdress = address1;
totaladdress += address2;
totaladdress += address3;
totaladdress += address4;
totaladdress += address5;
...
window.location.search = totaladdress;
所以我需要一个函数来检查它们(例如 check(address1);)并避免几十个 IF 以使代码更清晰。
【问题讨论】:
-
如果它可能被定义,也可能没有被定义,你需要使用
typeof foo === 'undefined'。 -
你想要
window.location.search = check(address);吗?您不会在任何地方使用check调用的结果
标签: javascript function scope