繁体   English   中英

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

[英]why javascript string variables must be initialized before concatenation

为什么在使用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);

谢谢-克里斯

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

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

var string = ""声明变量为其提供字符串值"" 由于这是一个字符串,因此具有concat方法,因此string.concat(...)起作用。

除非变量具有值,否则它就没有类型,也没有方法。 在诸如5 + "5" -> "55"情况下会自动进行类型转换,但在您的情况下则不会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM