Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多个If-Else语句,只运行第一个_Javascript - Fatal编程技术网

Javascript 多个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

我有需要多个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 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;