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

您使用的是与vanilla
each()
函数相当的
jQuery
。它们的功能相同:它们将遍历数组中的每个条目

不能对每个()短路
。相反,您需要使用
some()
every()
。这些功能相似,但相反:

  • some()
  • every()
    -只要其回调返回true,就会继续循环
在您的例子中,您希望使用
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

您使用的是与vanilla
each()
函数相当的
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
都是代码的另一个“不真实”问题,您知道
$每个()返回什么吗?它不是一个函数,因此,无论如何,在运行时都会出现错误