为什么'string'+ undefined => 'stringundefined'?

时间:2015-06-26 02:23:14

标签: javascript

问题非常简单。在Javascript中,为什么:

'string' + undefined
//=> 'stringundefined'

我本来希望只返回string,或者至少是一个错误,指出你不能将undefined转换为字符串数据类型。

3 个答案:

答案 0 :(得分:3)

由于您正在执行字符串连接,因此会发生强制类型转换。 undefined正在转换为字符串值并添加到字符串

'string' + undefined

Step 1: 'string'
Step 2: undefined -> 'undefined'
Step 3: 'string' + 'undefined' 

答案 1 :(得分:2)

当你连接字符串时,每个项目都会被强制转换为字符串,而未定义变为" undefined"。

String(undefined); // "undefined"

答案 2 :(得分:2)

有趣的问题。

因为ECMAScript使用内部ToString操作将原语转换为字符串。

    undefined=> "undefined" 
    null=>"null" 
    boolean=>either "true" or "false" 
    number>the number as a string e.g. "1.765"

http://www.2ality.com/2012/03/converting-to-string.html