为什么下面的代码没有打开带有文字" foo"的警告框?
function wrapInObject(value) {
return
{
value: value
};
}
alert(wrapInObject("foo").value);
同样为什么下面的代码没有打开带有文本" foobar"的警告框?
var a = "foo",
b = a;
b += "bar";
alert(a);
答案 0 :(得分:4)
function wrapInObject(value) {
return {
大括号应与return语句在同一行。这是因为javascript自动半结肠插入。它假定return语句已结束并插入分号。所以它将返回undefined。并且您正在尝试获取value
的{{1}}属性,这将导致错误。这就是为什么警报没有来的原因。
所以你的代码应该是:
undefined
关于第二个问题:
function wrapInObject(value) {
return {
value: value
};
}
它通过价值而非参考。因此,更改var a = "foo",
b = a;
b += "bar";
alert(a);
并不会更改b
这就是为什么您只获得a
的原因。
如果你foo
,它会给你alert(b)