【问题标题】:what is the meaning of "if (!J || !S)" in javascript?javascript中“if(!J ||!S)”的含义是什么?
【发布时间】:2019-09-18 03:28:12
【问题描述】:
var new= function(J, S) {
    if (!J || !S) return 0;

任何人都可以帮助我理解这种情况吗?

【问题讨论】:

  • 您在 new 上的问题似乎存在语法问题。
  • 如果 J 或 S 为假,则返回 0(false0NaN'' 等)
  • new 是 javascript 中的保留字,不能用作变量、标签或函数名

标签: javascript if-statement


【解决方案1】:

如果参数 J 或 S 中的任何一个为“假”,它基本上将返回 0(一个“假”值本身),这在 JavaScript 中意味着它们等于 undefinedfalseNaN , null, 0 或 ''(空字符串)。

其目的可能是在继续函数的其余部分之前检查参数是否丢失,大概是因为如果缺少任何一个参数,该函数将出错或返回无效结果。

【讨论】:

  • The intention is probably to check that the arguments are not missing before going on to the rest of the function 这是我的想法,但如果两个参数都是真实的,它会返回 undefined。大声问:你认为函数在继续之前检查返回值是否为undefined
【解决方案2】:

如果 (||) J 或 S 是 falsy,则函数返回 0:

  • false
  • 0
  • '', "", ``(空字符串)
  • null
  • undefined
  • NaN

如果两个值都为真,则返回undefined

var nu = function (J, S) {
  if (!J || !S) return 0;
}
 
// booleans
console.log(nu(true, true));
console.log(nu(true, false));
console.log(nu(false, false));

// other truthy/falsy values
console.log(nu(1, 1));
console.log(nu(1, 0));
console.log(nu(true)); // S is undefined
console.log(nu('foo', ''));
console.log(nu({}, null));
console.log(nu(1, NaN));
 

【讨论】:

    【解决方案3】:

    如果 J = "" 或 null 或未定义、0、NaN、false,则 !J 将为 true。

    !"" -> true
    !null -> true
    !undefined -> true
    !NaN -> true
    !0 -> true
    !false -> true
    

    它会检查J,S变量是否为空或null或未定义。

    【讨论】:

    • 您错过了其他 3 个也可以匹配的值
    • 这是一组不完整的“假”值。包括参考链接也有助于自我验证。
    【解决方案4】:

    if (!J || !S) 正在检查变量JS 是否至少有一个计算为falsey 值,然后表达式将计算为true 并因此执行return 0

    但请注意,您的代码中有 Uncaught SyntaxError: Unexpected token 'new',这是因为 new 是 JavaScript 保留字,不能用作变量名。

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 2022-01-25
      • 2015-02-24
      • 2018-05-02
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多