Javascript A=b||;“福”;;抱怨';b';未定义,且未将;“福”;。我错过了什么?

Javascript A=b||;“福”;;抱怨';b';未定义,且未将;“福”;。我错过了什么?,javascript,Javascript,在我的JavaScript代码和Chrome开发工具中,我写道: a = b || "foo"; 并获取以下错误: ReferenceError: b is not defined 并且a未设置为“foo”。我知道这是JavaScript中的有效模式。我遗漏了什么?如果b的值是未定义的,则您的模式是正常的 如果变量b可能未定义,则尝试读取该变量是一个很好的选择,因此会稍微复杂一些: a = typeof b!=="undefined" ? b : "foo"; 即使知道变量已定义(这是最常

在我的JavaScript代码和Chrome开发工具中,我写道:

a = b || "foo";
并获取以下错误:

ReferenceError: b is not defined

并且a未设置为“foo”。我知道这是JavaScript中的有效模式。我遗漏了什么?

如果
b
未定义的
,则您的模式是正常的

如果变量
b
可能未定义,则尝试读取该变量是一个很好的选择,因此会稍微复杂一些:

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

即使知道变量已定义(这是最常见的情况),也要小心处理
b | |某事
:通常,您希望提供一个默认值来替换
未定义的
,而不是阻止调用方传递
0
”,因此通常执行
b更安全==未定义?b:“foo”

在JavaScript中不是有效的模式。例如,它仅在
b
存在的上下文中有效

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

“我没有喝足够的咖啡吗?”我们怎么知道。。。你有这种感觉吗?而不是喝更多。
var a=window.b | |“foo”。。如果
b
是全局变量。@Mr_Green,如果变量在另一个范围内?@dystroy可能是
此.b
:|@格林先生,你想再谈一次这件事……该死的,你比我还快!非常感谢。完全有道理。不像我!我的票数已经用完了,否则我只会对这一点投赞成票:(@thefourtheye猜测,那么谁会这么做?@dystroy我猜你一天只能投40次赞成票/反对票。@dystroy我闻到了讽刺吗?;-)@dystroy实际上这并不是OP的代码应该做的:
a=typeof b==“未定义”?b | | |“foo”:“foo”