Javascript 多个If-Else语句,只运行第一个
我有需要多个If-Else语句的代码,但我不确定如何对其进行格式化,以便每个语句都能运行:Javascript 多个If-Else语句,只运行第一个,javascript,Javascript,我有需要多个If-Else语句的代码,但我不确定如何对其进行格式化,以便每个语句都能运行: let example = first; let example2 = second; let example3 = third; if (example === something) { return null; } else { return something; } if (example2 === somethingElse) { return null; } else { return
let example = first;
let example2 = second;
let example3 = third;
if (example === something) {
return null;
} else {
return something;
}
if (example2 === somethingElse) {
return null;
} else {
return somethingElse;
}
if (example3 === somethingMore) {
return null;
} else {
return somethingMore;
}
但这不起作用,因为有多个else语句,我想知道是否有办法做到这一点?我还尝试将数据放入数组或对象中进行迭代,但这也不起作用
请帮忙!:) 您必须删除
if
/else
块中的返回
-使用返回
将立即退出该函数。按照现在的代码方式,您基本上是在对函数进行短路(这不是您想要做的):
重新构造代码以使用如下变量可能更有意义:
//如果要流经所有if/else块,请添加一个变量以保存所需的输出
函数getVal(示例){
让瓦尔;
如果(示例=='something1'){
val='a'
}否则{
val='b';
}
返回val;
}
log(getVal('something1');
console.log(getVal('lorem'))代码>返回将立即从第一个if返回,因此将所有结果存储在对象或数组中,并按如下方式返回
让示例='first';
让示例2=第二个;
让我们举个例子3=‘第三’;
var return_data={};
如果(示例=='something'){
return_data.example=null;
}否则{
return_data.example=something;
}
如果(例如2==='somethingElse'){
return_data.example2=null;
}否则{
return_data.example2='somethingElse';
}
如果(例如3=='somethingMore'){
return_data.example3=null;
}否则{
return_data.example3='somethingMore';
}
返回数据代码>我不完全清楚您在问什么,但我认为您希望使用“else-if”语句:
您可以这样做:
myArray = [];
let example = first;
let example2 = second;
let example3 = third;
if (example === something) {
myArray.push(null);
} else {
myArray.(something);
}
if (example2 === somethingElse) {
myArray.push(null);
} else {
myArray.(somethingElse);
}
if (example3 === somethingMore) {
myArray.push(null);
} else {
myArray.(somethingMore);
}
return myArray;
就像Tom O.所说的return
将立即退出您的函数。您可以使用数组以外的内容,但请记住,return
只执行一次。无论您采用何种方法,似乎都希望构建某种类型的“集合”(数组、对象、集合、映射等),然后在最后返回它
但是,编码方式取决于函数存在的原因。让我们看一个例子
if(第一个===未定义){
返回空
}否则{
先返回
}
…此逻辑仅用于确保将“默认”值用于first
——类似于。对于这个用例,我可能会建议使用null合并来保持它的简单性(或者将来可以很容易地用它替换的东西):
第一个??无效的
//或者,如果您不使用babel/某种运输工具,您可能需要:
第一未定义(&F)第一个!==无效的第一:空
//由于默认值为空,我们可以将其缩短为:
第一未定义?第一:空
仅看一下您的示例,似乎您可以简单地获得多个变量的默认值。对于该用例,您(或遇到此问题的其他人)可能需要一个类似于下面代码段中的函数。为此使用对象和/或数组非常方便,因为如果需要,它们也可以
首先,使用数组的示例函数:
//如果需要数组中项目的默认值(静态,所有默认值都相同)
const buildArrayWithDefault=(VAL,defaultVal=null)=>vals.map(
v=>v!==未定义?v:defaultVal//可以是v??defaultVal
)
//如果需要数组中项目的默认值(静态,但默认值可能都不同)
const buildArrayWithDefaults=(VAL,DefaultVAL)=>vals.map(
(v,idx)=>v!==未定义?v:defaultVals[idx]//可能是v??defaultVals[idx]
)
//如果需要数组中项目的默认值(通过回调动态)
const buildArrayWithDefaults2=(VAL,getDefaultValue)=>vals.map(
(v,idx)=>v!==未定义?v:getDefaultValue(v,idx)
)
//所有这些都返回[1,5,3]
console.log(
buildArrayWithDefault([1,未定义,3],5),
buildArrayWithDefaults([1,未定义,3],[4,5,6]),
buildArrayWithDefaults2([1,未定义,3],(v,idx)=>idx+4)
)
您在第一次之后返回如果
将所有三个返回结果存储在object中并返回itSo,您想在一个函数调用中返回三个值吗?
myArray = [];
let example = first;
let example2 = second;
let example3 = third;
if (example === something) {
myArray.push(null);
} else {
myArray.(something);
}
if (example2 === somethingElse) {
myArray.push(null);
} else {
myArray.(somethingElse);
}
if (example3 === somethingMore) {
myArray.push(null);
} else {
myArray.(somethingMore);
}
return myArray;