为什么必须在连接之前初始化javascript字符串变量

时间:2014-03-07 23:07:05

标签: javascript variables initialization concat

为什么我必须在使用concat()方法之前定义一个javascript字符串变量?在下面的代码中,控制台不打印。但是如果我像这样初始化变量字符串 var string =“”; 它会像它应该那样连接并在控制台中打印字符串。这让我感到困惑,因为我认为javascript有自动类型转换,所以 var string; 应该初始化变量,然后当使用concat()时,它应该自动将类型更改为“String”和串联?

var select = document.getElementById("CK_Expertise");
options = select.getElementsByTagName('option');
var string;

for (var i=options.length; i--;){
    if(options[i].selected){
        string = string.concat(options[i].value + "<br/>"); 
        }
}
console.log(string);

谢谢 - 克里斯

2 个答案:

答案 0 :(得分:6)

  

这让我感到困惑,因为我认为javascript有自动类型转换,所以var string;应该初始化变量,然后当使用concat()时,它应该自动将类型更改为“String”并连接?

var string 声明变量。它以值undefined开头(不是字符串)。 undefined没有名为concat的方法,因此string.concat(...)失败。

var string = ""声明变量为其赋予字符串值""。由于这是一个字符串,因此它有一个concat方法,因此string.concat(...)有效。

答案 1 :(得分:0)

除非变量有值,否则它没有类型,也没有方法。在像5 + "5" -> "55"这样的情况下会有自动类型转换,但不会在你的。{/ p>中