我目前正在练习javascript,目前我在物体检测方面遇到了问题。我想创建一个对象并检测它是否存在。以下是我目前使用的一些示例代码。JavaScript对象检测
下面的代码示例是我如何创建我的对象。
var obj = obj || {};
我该用这个吗?
if (typeof obj !== "undefined") {
// code
}
或者这个?
if (obj !== null) {
}
我目前正在练习javascript,目前我在物体检测方面遇到了问题。我想创建一个对象并检测它是否存在。以下是我目前使用的一些示例代码。JavaScript对象检测
下面的代码示例是我如何创建我的对象。
var obj = obj || {};
我该用这个吗?
if (typeof obj !== "undefined") {
// code
}
或者这个?
if (obj !== null) {
}
值undefined
表示该变量未被赋值。值null
表示它已分配值null
。 ===
运营商(及其否定,!==
)阻止type coercion。
这是对的吗?这完全取决于你想要完成的事情。 undefined
和null
都是“falsy”值,表示每个值在布尔上下文中评估为false
(如false
,0
和空字符串)。
注意,如果obj
是null
,然后typeof obj
是不"undefined"
。
通常的做法是使用:
var obj = obj || {};
当代码运行,你可以肯定的是obj
已被定义(因为var
声明的),尽管它可能没有被赋值。
如果obj
的值解析为“falsey”值,那么您将分配一个对新对象的引用。
可能的结果是:
如果obj
尚未分配的值,一个新的对象引用被分配。
如果obj
先前被赋予了“falsey”值,它将被替换为新的对象引用(这可能与分配给它的falsey值的任何代码混淆)。
如果之前已为obj
分配了“truethy”原始值,则对obj
的以下属性分配将引发错误并停止脚本执行。
如果obj
已经是对除null
以外的对象的引用,则随后的属性赋值将是该对象。取决于对象的类型,事情可能没有问题。或不。据推测,你的控制之外的东西创造了这个物体,因此可能在你不知情的情况下修改或销毁它。你会怎么做?
这是不可能的JavaScript处理,一般案件2和3或4它不是你obj
你与dealiing。所以用一个不太可能与其他人冲突的名字,并希望你得到#1或#4,并且事情顺利。
顺便说一句,即使您在代码执行的位置拥有#1,代码在您的代码后面添加仍然可能会导致(或多或少)在#4中。
没有额外的好处就像测试:
if (typeof obj == 'undefined')
因为它的结果基本上是相同的。
1.没有'!==='。 2.你没有解释你真的需要什么。根据** real **目标,解决方案可能会有所不同 – zerkms 2012-07-20 02:37:22
为什么不简单地使用'var obj = {}'创建一个新对象? – 2012-07-20 02:39:38
如果您将obj设置为{},那么它不能为null或未定义。 – epascarello 2012-07-20 02:40:38