当我准备一个函数时,我注意到它最初返回'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,'成功返回。
返回什么'未定义'?
答案 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"
。