gpt4 book ai didi

javascript - JavaScript 中的变量范围,函数不返回正确的值

转载 作者:行者123 更新时间:2023-11-29 14:56:48 25 4
gpt4 key购买 nike

美好的一天,我偶然发现了 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”;

你能指出我的错误吗?

[更新]

我应该早点说 - 我只是在寻找更好的方法。当然简单 if 检查会正确,但 $address 变量不是唯一的你可以这样想象它

totaladdress = address1;
totaladdress += address2;
totaladdress += address3;
totaladdress += address4;
totaladdress += address5;
...
window.location.search = totaladdress;

所以我需要一个函数来检查它们(例如 check(address1);)并避免几十个 IF 以使代码更清晰。

最佳答案

当您将“1”分配给 value 时,它不会修改 address,因为与 address 关联的 String 引用被复制到 value,您不能修改原始引用。示例:

var address = "abc";
var value = address;
value = "def";
// address is still "abc"

您从函数中正确地返回了字符串,但是返回值被忽略了,所以没有帮助。你想要的是

address = check(address);
window.location.search = address;

或者只是

window.location.search = check(address);

甚至

function setAddress(value) {
window.location.search = value || "1";
}

关于javascript - JavaScript 中的变量范围,函数不返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16581157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com