JavaScript对象检测
我目前正在练习javascript,目前在对象检测方面遇到了问题。我想创建一个对象并检测它是否存在。下面是我目前正在使用的一些示例代码 下面的代码示例是我如何创建对象的JavaScript对象检测,javascript,oop,prototype-programming,object-detection,Javascript,Oop,Prototype Programming,Object Detection,我目前正在练习javascript,目前在对象检测方面遇到了问题。我想创建一个对象并检测它是否存在。下面是我目前正在使用的一些示例代码 下面的代码示例是我如何创建对象的 var obj = obj || {}; 我应该用这个吗 if (typeof obj !== "undefined") { // code } 还是这个 if (obj !== null) { } 值未定义表示变量未赋值。值null表示已为其分配值null。==运算符(及其否定形式,!==)阻止 哪个是对的?这完
var obj = obj || {};
我应该用这个吗
if (typeof obj !== "undefined") {
// code
}
还是这个
if (obj !== null) {
}
值
未定义
表示变量未赋值。值null
表示已为其分配值null
。==
运算符(及其否定形式,!==
)阻止
哪个是对的?这完全取决于你想要完成什么。undefined
和null
都是“falsy”值,这意味着在布尔上下文中每个值的计算结果都是false
,0
和空字符串
请注意,如果
obj
为null
,则obj的类型
不是“未定义”
,通常的做法是使用:
var obj = obj || {};
当该代码运行时,您可以确定已定义了obj
(因为var
声明),尽管它可能没有被赋值
如果obj
的值解析为“false”值,则您将为新对象指定一个引用
可能的结果是:
obj
指定值,则会指定一个新的对象参照obj
分配了一个“假”值,它将被一个新的对象引用所取代(这可能会与分配给它假值的任何代码相混淆)obj
分配了一个“truethy”原语值,则以下对obj
的属性分配将抛出错误,脚本执行将停止obj
已经是对null
以外的对象的引用,则随后的属性分配将是对该对象的。根据对象的类型,事情可能会好起来。或者不是。可能是你无法控制的东西创造了这个对象,因此可能会在你不知情的情况下修改或破坏它。你会怎么做obj
。所以,使用一个不太可能与其他名字冲突的名字,希望你得到1或4,一切顺利
顺便说一句,在您的代码之后添加的代码仍然可能(或多或少)导致#4,即使在代码执行时您有#1
测试没有其他好处,例如:
if (typeof obj == 'undefined')
因为结果基本相同。1。没有
===代码>。2.你还没有解释你真正需要什么。根据实际目标,解决方案可以改变为什么不简单地var obj={}
来创建一个新对象?如果您将obj设置为{},它不能为null或未定义。我的错,我的意思是typeof obj!==“未定义”和对象类型!==无效的我要问的是..哪种方法最适合确定对象是否存在。我在网上读到一些方法会产生错误的结果,我很难找到正确的方法。希望我能更好地解释自己。提前感谢!:)obj=obj |{}本质上是指if(!obj)obj={}。这相当简单,但希望有助于在这方面提供一些清晰的信息:)