gpt4 book ai didi

javascript - 扩展三元表达式

转载 作者:行者123 更新时间:2023-11-29 16:10:58 25 4
gpt4 key购买 nike

我知道您可以在 Javascript 中为 if - else 语句执行三元表达式,但是 else- else if- else 语句怎么样?我认为这肯定会得到支持,但我无法找到有关它的任何信息,也无法让它正常工作。

最佳答案

与 Robby Cornelissen 的回答相反 - 如果您正确地格式化它(而不是编写 PHP,因为与具有该构造的所有其他语言相比,它通过使运算符左关联而弄乱了运算符,那么可读性就没有问题) :

var y =
x == 0 ? "zero" :
x == 1 ? "one" :
"other";

编辑

What I was looking for is a shorter version of "if expression 1 is true, return expression 1. Else if expression 2 is true, return expression 2. Else return expression 3". Is there no clean way to do this?

有:expression1 ||表达式2 ||表达式 3。 (如果你一开始就把这个放在你的问题中就好了。)这通常用于默认值:

var defaults = null;
function hello(name) {
var displayName = name || (defaults && defaults.name) || "Anonymous";
console.log("Hello, " + displayName + ".");
}

hello("George");
// => Hello, George.
hello();
// => Hello, Anonymous.
defaults = {};
hello();
// => Hello, Anonymous.
defaults.name = "You"
hello();
// => Hello, You.

但是,了解真实性的条件很重要。例如,如果您希望 ""0 是一个不需要被默认替换的有效值,则代码将失败;只有当可能的非默认值集合恰好是真值集合时,这个技巧才有效,不多也不少。例如

function increment(val, by) {
return val + (by || 1); // BUG
}

increment(10, 4);
// => 14
increment(10, 1);
// => 11
increment(10);
// => 11
increment(10, 0);
// => 11 <-- should be 10

在这种情况下你需要明确:

function increment(val, by) {
return val + (typeof(by) === "undefined" ? 1 : by);
}

关于javascript - 扩展三元表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036275/

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