我刚刚刷了一下AngularJS,我遇到了angular.isDefined和angular.isUndefined,你为什么要用这些?为什么不做呢
if (!obj) or if (obj === undefined)
我明白你可能不想不想做什么!var因为你会得到其他假的obj以及undefined。但为什么还要创建一种方法来解决这个问题呢?
答案 0 :(得分:2)
在较旧的浏览器中,undefined
常量不是常量,因此您可以通过意外为其分配值来打破它:
if (undefined = obj) // oops, now undefined isn't undefined any more...
检查非常量undefined
安全的未定义值的方法有点长,并且要检查类型:
if (typeof obj === "undefined")
像isUndefined
这样的库方法使用这种安全方法,因此它允许您编写与更多浏览器兼容的代码,而无需了解每个浏览器的每个版本的每个怪癖。
答案 1 :(得分:0)
两者不相同:考虑var obj = false
,然后if (!obj)
为truthy
,if (obj === undefined)
为falsy