gpt4 book ai didi

javascript - 将 javascript 对象与在一起

转载 作者:数据小太阳 更新时间:2023-10-29 05:03:17 25 4
gpt4 key购买 nike

我在我们的应用程序中遇到了这段代码(已修改),并且对其工作方式感到困惑:

    function someObject()
{
this.someProperty = {};
this.foo =
{
bar:
{
baz: function() { return "Huh?" }
}
};

this.getValue = function()
{
return (this.someProperty && this.foo.bar && this.foo.bar.baz && this.foo.bar.baz()) || null;
}
}

function test()
{
var o = new someObject();
var val = o.getValue();
alert(val);
}

当您调用 test() 函数时,文本“Huh?”被提醒。我不确定 getValue 的结果是如何返回的,我认为执行 A && B && C && D 会返回 true,而不是 D 的值。

最佳答案

发生这种情况是因为 Boolean Operators在 JavaScript 中可以返回一个操作数,不一定是 Boolean 结果,例如:

逻辑与运算符 (&&),如果第一个操作数真实,将返回第二个操作数的值:

true && "foo"; // "foo"

如果第一个操作数本身falsy,它将返回第一个操作数的值:

NaN && "anything"; // NaN
0 && "anything"; // 0

这就是为什么在您的示例中返回 "Huh?",因为所有前面的表达式都是 truthy:

alert("A" && "B" && "C" && "Huh?"); // "Huh?"
alert(true && true && true && "Huh?"); // "Huh?"

逻辑或运算符 (||) 具有类似的行为,它将返回第二个操作数的值,如果第一个是falsy:

false || "bar"; // "bar"

如果第一个操作数本身是非假的,它将返回第一个操作数的值:

"foo" || "anything"; // "foo"

此行为通常用于设置默认值,例如:

function test (arg1) {
arg1 = arg1 || "default value";
}

注意: 伪值是那些在 bool 上下文中使用时强制为 false 的值,它们是:null undefinedNaN0、零长度字符串,当然还有 false。任何其他内容都会强制转换为 true

关于javascript - 将 javascript 对象与在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com