分辨方式:1、用“if(!Obj)”句子;2、用“if(!window.Obj)”;3、用“if(!this.Obj)”;4、用“if(typeof Obj=="undefined")”;5、用“if(Obj==undefined)”这些。
本实例教程作业环境:windows7系统软件、javascript1.8.5版、Dell G3计算机。
javascript判断对象是不是存有的方式
如今,我们应该判断一个全局对象myObj存不存在,假如不存有,便对它开展申明。用自然语言理解叙述的算法如下所示:
if (myObj不会有){
申明myObj;
}
下边跟大家分享10种建立方式:
方式1:
if (!myObj) {
var myObj = { };
}
方式2:
除开var指令,也可以有另一种改变,也会得到正确结论:
if (!window.myObj) {
myObj = { };
}
window是javascript的高层目标,每一个局部变量都就是它的特性。因此,分辨myobj是不是为空,相当于分辨window目标是否存在myobj特性,那样就能避免由于myObj并没有界定而发生ReferenceError不正确。但是,从代码的规范化考虑到,建议还是对第二行再加上var:
if (!window.myObj) {
var myObj = { };
}
或是写出那样:
if (!window.myObj) {
window.myObj = { };
}
方式3:
上边这类书写的缺点在于,在一些软件环境中(例如V8、Rhino),window未必就是高层目标。因此,考虑到改变成:
if (!this.myObj) {
this.myObj = { };
}
在局部变量层面上中,this关键词一直偏向高层自变量,所以才能够不同于不同类型的软件环境。
方式4:
可是,上边这么写易读性较弱,并且this的偏向是可调的,非常容易出差错,因此进一步改变:
var global = this;
if (!global.myObj) {
global.myObj = { };
}
用自定义变量global表示高层目标,就清晰得多。
方式5:
还可以使用typeof操作符,分辨myObj是否存在界定。
if (typeof myObj == "undefined") {
var myObj = { };
}
是目前应用最普遍的分辨javascript目标是不是存有的方式。
方式6:
因为在已界定、但并未取值的情形下,myObj数值立即相当于undefined,因此上边的书写能够简单化:
if (myObj == undefined) {
var myObj = { };
}
这里还有两个地方应注意,最先第二行的var关键词也不能少,不然会有ReferenceError不正确,次之undefined不可以加反斜杠或引号,这个地方较为是指undefined这类基本数据类型,而非"undefined"这一字符串数组。
方式7:
上边的书写在"精准较为"(===)的情形下,仍然创立:
if (myObj === undefined) {
var myObj = { };
}
方式8:
依据javascript的表达设计方案,undefined == null,因为比较myObj是不是相当于null,也会得到恰当结论:
if (myObj == null) {
var myObj = { };
}
但是,尽管运作结论恰当,但从语义上看,这个辨别方式是不对的,应该避免。由于null是指早已取值为null的空对象,即这一目标实际是有系数的,而undefined是指不会有或者没有取值的对象。因而,这儿必须使用"比较运算符"(==),假如这儿应用"精准比较运算符"(===),便会出差错。
方式9:
还可以使用in操作符,分辨myObj是否属于高层对象一个特性:
if (!('myObj' in window)) {
window.myObj = { };
}
方式10:
最终,应用hasOwnProperty方式,分辨myObj是否属于高层对象一个特性:
if (!this.hasOwnProperty('myObj')) {
this.myObj = { };
}
汇总
1. 如果要判断对象存不存在,建议使用第五种书写。
2. 假如除开目标存不存在,还需要判断对象是否存在null值,建议使用第一种书写。
3. 除非是突发情况,全部自变量都应应用var指令申明。
4. 为了能混合开发,提议尽量使用window表明高层目标。
5. 在Javascript语言中,null和undefined很容易产生搞混。在很有可能与此同时涉及到二者的情形下,最好使用"精准较为"操作符(===)。
【强烈推荐学习培训:javascript高级教程】
以上就是关于javascript如何判断对象是否存有的具体内容,大量欢迎关注AdminJS其他类似文章!