Why it is not good to use “!= null” to test if argument is passed
本问题已经有最佳答案,请猛点这里访问。
从书中提到的可维护的javascript:
1 2 3 4 5 6 | // Bad: Testing to see if an argument was passed function doSomething(arg1, arg2, arg3, arg4){ if (arg4 != null){ doSomethingElse(); } } |
但我觉得在这里使用
作者有什么理由认为这是坏的?
除非你希望,一些人建议使用
和你很好的代码,这对双(三defends是好的:)的可能性
没有什么在所有的参数传递。
什么
什么
但有评论说,这是一个坏的方式来测试是否在参数传递和它是什么,因为它不捕捉:
我会强烈建议看http:/ / /演示文稿www.infoq.com零引用的万亿美元的错误- Tony Hoare a艳表示在这个物从人谁创造了它自己。
当然。在JavaScript中,你可以有
这是一个重要的方式,你需要检查未定义的,和不为零,返回false。请小心这一负载状态通知,你可以在这里:a false价值自觉)
编辑:T.J.克罗德是在这里。它的易于使用的和最想在这工作的情况,但要小心。
因为你的护照什么功能,所以零。如果你是到下面的:
1 2 3 4 5 | var obj = new MyObject(); // ... obj = null; // ... doSomething(arg1, arg2, arg3, obj); |
你会通过你的论据,但因为传递参考故障检查会是零。总是使用下面的:
1 2 | if(typeof arg4 != 'undefined') // ... |