gpt4 book ai didi

javascript - 我的变量为什么返回空?

转载 作者:行者123 更新时间:2023-12-02 14:12:20 25 4
gpt4 key购买 nike

我不确定这是否是一个范围问题,因为对我来说一切似乎都是合理的,但不知何故我的变量一直返回空。

我正在尝试重构这两个相似的代码并投入使用。这些代码完美地满足了我的需求,但是当我尝试重构时,变量不断返回空。

有人可以帮我吗?

这是我有的两个类似的代码,运行良好

var productOutOfStock = "";
$(".availability.outofstock").each(function(){
var outOfStockMsg = $(this).text();
var name = $(this).closest(".basket-items").find(".product-name").text();
if(outOfStockMsg != ""){
productOutOfStock += name + "<br>";
}
});

var productOffline = "";
$(".availability.instock").each(function(){
var outOfStockMsg = $(this).text();
var name = $(this).closest(".basket-items").find(".product-name").text();
if(outOfStockMsg != ""){
productOffline += name + "<br>";
}
});

这是我正在尝试的重构,并给了我空字符串

var productOutOfStock = "";
var productOffline = "";

function getProductNames(offOrNostock, nameList){
offOrNostock.each(function(){
var message = $(this).text();
var productName = $(this).closest(".basket-items").find(".product-name").text();
if(message != ""){
nameList += productName + "<br>";
}
});
console.log(nameList); //this does show the names
}

getProductNames($(".availability.outofstock"), productOutOfStock);
getProductNames($(".availability.instock"), productOffline);
console.log(productOutOfStock); //this is giving me empty string

预先感谢您的帮助。

最佳答案

JavaScript 是一种按值传递语言,因此您的字符串将作为副本传递。当函数修改 nameList 变量时,它会修改作为第二个参数传递的字符串的副本。

您可以修改您的函数,使其返回更新后的字符串:

function getProductNames(offOrNostock, nameList){
offOrNostock.each(function(){
var message = $(this).text();
var productName = $(this).closest(".basket-items").find(".product-name").text();
if(message != ""){
nameList += productName + "<br>";
}
});
return nameList;
}

productOutOfStock = getProductNames($(".availability.outofstock"), productOutOfStock);

关于javascript - 我的变量为什么返回空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420946/

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