gpt4 book ai didi

javascript - 如果 "obj"未定义,则 angular.isDefined(obj) 不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:02 24 4
gpt4 key购买 nike

我习惯于输入有点乱的 typeof obj !== "undefined" 习惯用法。但是,我注意到了 angular.isDefined(obj) 方法。文档说如果未定义给定对象,它将返回 false。然而,它实际上在做什么(至少在 Firefox 中)只是失败了,说“obj 未定义”。我错过了什么吗?

最佳答案

tl;dr;:angular.isDefined(obj) 不能完全替代 typeof


Am I missing something?

我不这么认为。 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

关于javascript - 如果 "obj"未定义,则 angular.isDefined(obj) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com