2014-04-29 20 views
6

在我的JavaScript代码,并在Chrome浏览器开发工具,我写:A = b || “富”;抱怨'b'是未定义的并且没有分配给“foo”。我错过了什么?

a = b || "foo"; 

而得到这个错误:

ReferenceError: b is not defined 

而一个没有被设置为 “富”。我知道这是JavaScript中的有效模式。我错过了什么?

+2

“我没有足够的咖啡吗?”我们怎么知道...你有这种感觉吗?比喝更多。 – nicael

+0

'var a = window.b || “foo”;'.. if'b'是全局变量.. –

+0

@Mr_Green如果变量在另一个范围内? –

回答

10

这就是而不是 JavaScript中的一个有效模式。它仅在存在b的情况下有效,例如

function test(b) { 
    var a = b || "foo"; 
}; 
+0

该死的你比我快! – A1rPun

+0

谢谢。完全意义。不像我! –

12

如果的值的值为b的值为undefined,那么您的模式可以。

如果变量b可能是没有定义的,它是一个error尝试读取它,因此它是一个更复杂一点:

a = typeof b!=="undefined" ? b : "foo"; 

小心b||something,即使你知道的变量定义(这是最常见的情况):大多数情况下,您希望提供一个默认值来替换undefined,但不会阻止呼叫方通过0"",因此通常会更安全地执行b!==undefined ? b : "foo"

+0

我的投票用尽了,否则我只会提出这个只有:( – thefourtheye

+0

@thefourtheye猜猜,谁 – nicael

+0

@thefourtheye什么?你可以用尽你的选票吗? –

相关问题