为什么我的字符串开头有“未定义”文本?

Vah*_*ahn 1 javascript

我有一个函数将来自 AJAX 请求的结果连接在一起。

出于某种原因,我的最后一个字符串以“undefined”开头。

这是一个重现问题的简化示例:

    // In practice, fetched via AJAX from a server
    var vendors = [{ id_vendor: 'V0001' }, { id_vendor: 'V0002' }];

    var row_vendor;

    vendors.forEach(function (value) {
      row_vendor += value.id_vendor;
    });
	
    alert(row_vendor); // undefinedV0001V0002
Run Code Online (Sandbox Code Playgroud)

为什么警报值显示前导“未定义”?

mea*_*gar 6

你没有初始化你的变量,所以它的值是undefined. 连接字符串会将其强制"undefined"为连接之前的字符串。

考虑:

var x
alert(x + "test") // undefinedtest
Run Code Online (Sandbox Code Playgroud)

相反,在执行串联之前将变量初始化为空字符串:

var x = ""
alert(x + "test") // test
Run Code Online (Sandbox Code Playgroud)

请注意,从功能上讲,首先提取您感兴趣的属性然后将join它们简单地放在一起要干净得多:

$.map(vendor, function (v) { return v.vendor_id }).join('')
Run Code Online (Sandbox Code Playgroud)