1、直接判断对象不为null
if (!myObj) {
var myObj = { };
}
Javascript语言是"先解析,后运行",解析时就已经完成了变量声明
2、使用window对象判断某对象是否存在
if (!window.myObj) {
var myObj = { };
}
3、使用this对象判断某对象是否存在
if (!this.myObj) {
this.myObj = { };
}
在某些运行环境中(比如V8、Rhino),window未必是顶层对象。所以,考虑改成this进行判断,在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。
4、方法三这样写可读性较差,而且this的指向是可变的,容易出错,所以进一步改写:
var global = this;
if (!global.myObj) {
global.myObj = { };
}
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来判断文件是否存在的方式,并提供相应的示例代码。 客户端判断文件是否存在: 在客户端,我们可以利用Windows平台的ActiveX对象“Scripting.FileSystemObject”来...
以下详细知识点涵盖了如何用JavaScript判断图片是否存在,以及实现这一功能的具体代码示例。 ### JavaScript检测图片是否存在 JavaScript提供了一种机制来处理图片加载失败的情况。当图片无法加载时,可以通过`...
JavaScript是一种动态类型的编程语言,它的灵活性使得在处理对象存在性检查时存在多种方法。这篇文章将总结判断JavaScript对象是否存在的10种常见方法。首先,我们要理解JavaScript中的变量声明和作用域,这对于理解...
`hasOwnProperty()`是JavaScript对象的一个内置方法,它用于判断对象是否具有指定的自有属性,不考虑继承属性。例如: ```javascript var o = {x: 1}; o.hasOwnProperty("x"); // true,自有属性中有x o....
循环引用的判断我们可以通过map来进行暂存,当值是对象的情况下,我们将对象存在map中,循环判断是否存在,如果存在就是存在环了,同时进行递归调用。let has
总结一下,判断jQuery对象是否存在有以下几种方式: 1. 使用`.length`属性:`if ($("#id").length > 0)` 2. 访问数组形式:`if ($("#id")[0])` 3. 原生JavaScript方法:`if (document.getElementById("id"))` 根据...
在JavaScript(JS)编程中,有时我们需要验证接收到的数据是否为JSON对象,并检查该对象是否包含特定的字段。本文将详细介绍两种关键方法:判断数据是否为JSON对象以及检测JSON对象中是否存在某个字段。 首先,我们...
在操作对象时,我们经常需要判断对象中是否存在某个特定的属性,这可以通过几种不同的方式来完成。 首先,可以通过`in`关键字来检查对象是否包含某个属性。如果属性存在于对象或对象的原型链中,`in`操作符会返回`...
本文实例讲述了jQuery判断对象是否存在的方法。分享给大家供大家参考。具体如下: 一、传统Javascript的写法 obj = document.getElementById(someID); if (obj){ obj.innerText(hi); } 在jQuery中,var obj = $...
在JavaScript中,判断对象是否拥有特定属性是常见的需求。本文将详细介绍三种常用的方法,并分析它们的适用场景和局限性。 1. **点操作符 (.) 或方括号操作符 ([ ])** 点操作符和方括号操作符都可以用来访问对象的...
当需要准确判断对象是否拥有某个特定属性时,应优先考虑使用hasOwnProperty方法。而在涉及原型链属性的场景下,in运算符则更加适用。需要注意的是,在使用for-in循环遍历对象属性时,为了防止枚举到不应该出现的原型...
在JavaScript编程中,判断对象是否为空是一个常见的需求,特别是在处理数据验证、逻辑判断或优化代码性能时。本文将深入探讨三种不同的实现方法,帮助开发者更好地理解和应用这些技巧。 首先,我们要明确什么是“空...
在JavaScript编程中,数组是一种非常重要的数据结构...希望这个关于JavaScript判断数组是否存在键的简单实例能帮助你更好地理解和应用这些知识。在进行JavaScript编程时,一定要注意这些细节,以避免潜在的问题和错误。
在JavaScript编程中,判断对象数组是否包含某个特定对象是一项常见的任务。这主要涉及到数组的遍历和比较操作。本文将详细讲解如何实现这个功能,并提供相关的代码示例。 首先,我们要明白JavaScript中的对象是引用...
在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...
在JavaScript编程中,判断一个对象是否存在是常见的操作,特别是在处理全局变量或确保对象已被初始化时。本文将深入探讨几种常见的判断JavaScript对象是否存在的方法,并解释它们的工作原理。 首先,我们来回顾一下...