为什么我必须在使用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);
谢谢 - 克里斯
答案 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>中