Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
172 views
in Technique[技术] by (71.8m points)

javascript - Why is there "undefined" text in the beginning of my string?

I have a function that concatenates together the results from an AJAX request.

For some reason, my final string starts with "undefined".

Here is a simplified example that reproduces the problem:

    // 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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You're not initializing your variable, so its value is undefined. Concatenating a string coerces it to the string "undefined" before the concatenation.

Consider:

var x
alert(x + "test") // undefinedtest

Instead, initialize your variable to an empty string before performing concatenation:

var x = ""
alert(x + "test") // test

Note that functionally it is much cleaner to first extract the property you're interested in and then simply join them together:

$.map(vendor, function (v) { return v.vendor_id }).join('')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...