gpt4 book ai didi

javascript - "eval"是不是只能用 JS "switch"作为表达式?

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

我发现在JavaScript中,switch总是一句指令,用它作为表达式会报错。所以当我必须根据不同的条件给一个变量赋不同的值时,我必须这样写:

switch(true){
case x<0.1: aVariable = '#f0f0f0';break;
case x<0.2: aVariable = '#d3eadf';break;
case x<0.3: aVariable = '#bce1cd';break;
case x>=0.3: aVariable = '#9cd4b9';break;
}

或者我应该像这样使用“eval()”:

aVariable = eval("switch(true){"+
"case x<0.1:'#f0f0f0';break;"+
"case x<0.2:'#d3eadf';break;"+
"case x<0.3:'#bce1cd';break;"+
"case x>=0.3:'#9cd4b9';break;"+
"}");

是否有任何其他方法可以将 switch 用作表达式而不是指令句,从而使我的代码不那么冗长?

最佳答案

另一种方法是使用函数并立即调用它:

var aVariable = (function(){  switch(true){
case x<0.1: return '#f0f0f0';
case x<0.2: return '#d3eadf';
case x<0.3: return '#bce1cd';
case x>=0.3: return '#9cd4b9';
}})(); // call it immediately

由于 return 短路,您还可以使用 if 来实现此技巧:

var aVariable = (function(){
if (x < 0.1) return '#f0f0f0';
if (x < 0.2) return '#d3eadf';
if (x < 0.3) return '#bce1cd';
if (x >= 0.3) return '#9cd4b9';
})(); // call it immediately

基本上,诀窍是我们将它包装在一个函数表达式中,该函数表达式将它转换为一个表达式,这种立即调用函数表达式的技术在 JavaScript 中是一个有用的技巧。

关于javascript - "eval"是不是只能用 JS "switch"作为表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32451049/

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