Dav*_*arr 7 javascript angularjs
我习惯于打字有点凌乱的typeof obj !== "undefined"
习语.但是,我注意到了这个angular.isDefined(obj)
方法.文档说如果没有定义给定的对象,它将返回false.然而,它实际上在做什么(至少在Firefox中)只是失败,说"obj没有定义".我错过了什么吗?
Fel*_*ing 11
TL;博士; :angular.isDefined(obj)
不是完全替代品typeof
.
我错过了什么吗?
我不这么认为.typeof
是一个特殊的运算符,如果obj
根本不存在则不会抛出错误.但是,将变量传递给函数将导致尝试读取变量的值,因此如果它不存在则抛出错误.没有办法阻止这种情况.
AFAIK typeof
是唯一一个遇到引用错误时不会抛出的运算符.另一方面,如果您必须测试变量是否存在,那么您的代码可能设计得很差(除非您必须测试"功能"的存在(如第三方模块)).
预期行为的示例:
var foo;
var bar = 42;
typeof foo !== 'undefined'; // false
typeof bar !== 'undefined'; // true
typeof baz !== 'undefined'; // false
isDefined(foo); // false
isDefined(bar); // true
isDefined(baz); // ReferenceError
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4446 次 |
最近记录: |