Javascript短路if语句:如何返回true
我正在尝试创建一个函数,用于检查Javascript短路if语句:如何返回true,javascript,Javascript,我正在尝试创建一个函数,用于检查null或时的值。“ 这是我到目前为止得到的(正在工作) 但是,如果我尝试短路第二个If语句,它将返回一个错误 function notnull(values,success,failed){ var count = 0 $.each(values,function(index,val){ val != "" && val != null ? count++ : count })(count == values.length) ? ret
null
或时的值。“
这是我到目前为止得到的(正在工作)
但是,如果我尝试短路第二个If
语句,它将返回一个错误
function notnull(values,success,failed){
var count = 0
$.each(values,function(index,val){
val != "" && val != null ? count++ : count
})(count == values.length) ? return true:console.log('false')
}
错误是
未捕获的语法错误:意外的令牌返回
问题1:在短路版本中,如何返回true
或false
问题2:在代码处
val != "" && val != null ? count++ : count
我怎么能省略else部分呢?您的第二个示例有点混乱,但如果我理解您的函数,您希望遍历每个值并确保它们都不为null,对吗 这是你的原作,稍微整理一下:
function notNull(values){
let count = 0;
$.each(values, function (index,val) {
(val != "" && val != null) ? count++ : count
});
return count == values.length; // returns true or false
}
基本上,您要检查每个值,如果它们不为null,则将其计数,如果没有值为null(计数与数组相同),则返回true
,否则返回false
您使用的是与vanillaeach()
函数相当的jQuery
。它们的功能相同:它们将遍历数组中的每个条目
不能对每个()短路
。相反,您需要使用some()
或every()
。这些功能相似,但相反:
some()
-只要其回调返回true,就会继续循环every()
each()
,因为您希望遍历每个元素并确保它是某个元素(在您的例子中,不是null):
函数notNull(值){
返回值。每个((值)=>value!=“”&&value!=null);
}
log(notNull([1,2,3]);
log(notNull([1,null,3])代码>您的第二个示例有点混乱,但如果我理解您的函数,您希望遍历每个值并确保它们都不为null,对吗
这是你的原作,稍微整理一下:
function notNull(values){
let count = 0;
$.each(values, function (index,val) {
(val != "" && val != null) ? count++ : count
});
return count == values.length; // returns true or false
}
基本上,您要检查每个值,如果它们不为null,则将其计数,如果没有值为null(计数与数组相同),则返回true
,否则返回false
您使用的是与vanillaeach()
函数相当的jQuery
。它们的功能相同:它们将遍历数组中的每个条目
不能对每个()短路
。相反,您需要使用some()
或every()
。这些功能相似,但相反:
some()
every()
-只要其回调返回true,就会继续循环
在您的例子中,您希望使用each()
,因为您希望遍历每个元素并确保它是某个元素(在您的例子中,不是null):
函数notNull(值){
返回值。每个((值)=>value!=“”&&value!=null);
}
log(notNull([1,2,3]);
log(notNull([1,null,3])代码>第一种方法有什么问题?您在第二部分中尝试的是完全无效的语法return
只能是语句中的第一个关键字。function-notnull(value,usused1,unused2){return-values.filter(x=>x).length!==0}
如果确实需要一个检查任何内容是否为null的关键字:function-anynull(value){return values.filter(x=>x).length!==values.length}
以上取决于过滤器的JavaScript行为,以测试过滤器函数的返回值是否为“真实性”<代码>“
”、0
、false
、undefined
、NaN
和null
都是代码的另一个“不真实”问题,您知道$每个()返回什么吗?它不是一个函数,所以,不管怎样,在运行时都会出现错误第一种方法有什么问题?您在第二部分中尝试的是完全无效的语法return
只能是语句中的第一个关键字。function-notnull(value,usused1,unused2){return-values.filter(x=>x).length!==0}
如果确实需要一个检查任何内容是否为null的关键字:function-anynull(value){return values.filter(x=>x).length!==values.length}
以上取决于过滤器的JavaScript行为,以测试过滤器函数的返回值是否为“真实性”<代码>“
”、0
、false
、undefined
、NaN
和null
都是代码的另一个“不真实”问题,您知道$每个()返回什么吗?它不是一个函数,因此,无论如何,在运行时都会出现错误