<分区>
从 Maintainable JavaScript 一书中提到:
// Bad: Testing to see if an argument was passed
function doSomething(arg1, arg2, arg3, arg4){
if (arg4 != null){
doSomethingElse();
}
}
但我觉得这里用!= null
还是挺有效的,它过滤了参数未传递和传递为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
。 !=
执行类型强制转换,其效果之一是它将 null
和 undefined
视为等价的(null ==未定义
为真)。
因此,除非您愿意,否则有些人建议不要将 !=
与 null
(或 undefined
)一起使用。
你说得对,代码防御了两种(实际上是三种)可能性:
根本没有为参数传递任何内容。
null
已通过。
undefined
已通过。
但是评论说这是测试参数是否被传递的糟糕方法,它是:因为它不会捕获传递的 null
或 undefined
。 (传入 null
和不传入 anything 是不同的情况。)这并不一定意味着检查特定函数的参数是一种糟糕的方法。
关于javascript - 为什么使用 "!= null"测试参数是否传递不好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678934/
相关文章:
javascript - 如何反转 ul li javascript asp.net
javascript - 使用 Javascript 通过 Adobe Air App 访问 Sharepoint 2007
javascript - 使用 jQuery 提交内容的最佳方法
javascript - 如何在使用 auth0 进行身份验证的 React 应用程序中获取用户信息
javascript - 比较 jquery .data() 与 String 始终为 false
javascript - 在 Three.js 中更改单击边缘的颜色