gpt4 book ai didi

javascript - 简写 if/else 语句 : foo? foo:bar vs foo ||酒吧

转载 作者:行者123 更新时间:2023-11-30 08:04:57 31 4
gpt4 key购买 nike

我想知道这两者有何不同?

var hello = foo?foo:bar;

对比

var hello = foo || bar;

你能解释一下吗?和一些案例?还是两者相同?

PS : foo/bar 应该都像 string/int/obj/boolean...

最佳答案

? : 被称为 条件运算符 它需要三个参数(这就是它有时被称为“三元”运算符的原因):要测试的东西,如果测试为真则返回的东西,以及一些东西如果测试错误则返回。*

第二个是 JavaScript 的 curiously-powerful logical OR operator .它接受两个参数。它评估第一个操作数,如果为真,则返回它;如果第一个是假的,它计算并返回第二个操作数。

所以这两者之间的区别在于:使用条件运算符,foo 可能会被计算两次(如果它为真)。使用 ||foo 只计算一次。 foobar 是否只是简单的变量引用并不重要,但请考虑:

var hello = foo() ? foo() : bar();
// vs
var hello = foo() || bar();

您可以看到 foo() 被评估多少次是多么重要,如果它做了任何重要的工作或有任何 side effects .


(* 那么什么是“truthy”和“falsey”值?“falsey”值是0""NaNundefinednull,当然还有 false。其他一切都是“真实的”。)

关于javascript - 简写 if/else 语句 : foo? foo:bar vs foo ||酒吧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535079/

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