为什么'+ ='运算符返回undefined?

时间:2015-03-04 21:06:34

标签: javascript jquery

当我准备一个函数时,我注意到它最初返回'undefined'以及它应该返回的其他信息。这是that function

foo = function(bar) {
    var glorp;
    if(typeof bar == 'undefined'){bar = 'baz'}; // there will be other conditions later
    if('baz' == bar) {
        glorp += 'this, ';
        glorp += 'that, ';
        glorp += 'the other';
        return glorp;
    }
}

我正在调用这样的函数:

$('#glorp').append(foo());

回报是:

  

undefinedthis,那个,另一个

当我预料到这一点时:

  

这个,那个,另一个

我做了很多挖掘,但我无法找到任何确定的东西。然后我将第一个glorp运算符更改为=,未定义的消息就消失了。

由于glorp是在函数开头声明的,因此它应该在if语句中定义,并且它似乎是'this,'成功返回。

返回什么'未定义'?

2 个答案:

答案 0 :(得分:9)

因为

var glorp;  //<--undefined
console.log(glorp);  //logs undefined

glorp = glorp + "x";  // undefined + "x" -> "undefined" + "x" -> "undefinedx"
console.log(glorp);  //logs "undefinedx"

将其设置为空字符串

var glorp = "";

答案 1 :(得分:3)

您需要在开始时将glorp设为空字符串

var glorp = "";

对于您的输出,当您添加undefined + string时,它会使undefined成为字符串值"undefined"。所以"undefined" + "this" = "undefinedthis"