javascript - 为什么使用 "!= null"测试参数是否传递不好

标签 javascript

<分区>

从 Maintainable JavaScript 一书中提到:

// Bad: Testing to see if an argument was passed
function doSomething(arg1, arg2, arg3, arg4){
if (arg4 != null){
    doSomethingElse();
  }
}

但我觉得这里用!= null还是挺有效的,它过滤了参数未传递和传递为null的情况

作者认为它不好的原因是什么?

最佳答案

!= null 对于 undefined 是假的,它基本上意味着 x !== null && x !== undefined!= 执行类型强制转换,其效果之一是它将 nullundefined 视为等价的(null ==未定义为真)。

因此,除非您愿意,否则有些人建议不要将 !=null(或 undefined)一起使用。

你说得对,代码防御了两种(实际上是三种)可能性:

  1. 根本没有为参数传递任何内容。

  2. null 已通过。

  3. undefined 已通过。

但是评论说这是测试参数是否被传递的糟糕方法,它是:因为它不会捕获传递的 nullundefined。 (传入 null 和不传入 anything 是不同的情况。)这并不一定意味着检查特定函数的参数是一种糟糕的方法。

关于javascript - 为什么使用 "!= null"测试参数是否传递不好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678934/

相关文章:

javascript - 如何反转 ul li javascript asp.net

javascript - 使用 Javascript 通过 Adob​​e Air App 访问 Sharepoint 2007

javascript - 使用 jQuery 提交内容的最佳方法

javascript - jQuery 悬停功能有问题

javascript - 如何在使用 auth0 进行身份验证的 React 应用程序中获取用户信息

javascript - 比较 jquery .data() 与 String 始终为 false

javascript - 在 Three.js 中更改单击边缘的颜色

javascript - 未捕获的类型错误 : Object #<MouseEvent> in chrome

javascript - 如何识别 JSON 对象是否嵌套

javascript - 更改表中 td 的颜色