在平日的前端开发中,我们会经常遇到一个问题,就是 “某某某对象未定义或者underfined”,为了避免这样的问题,我们在用一个对象或者变量的时候得预先判断,然后做下一步操作,判断对象是否存在的方法有很多种,大致总结了下有如下:
第一种
1
2
3if (!myObj) {
var myObj = { };
}第二种
1
2
3if (!window.myObj) {
var myObj = { };
}第三种
1
2
3if (!this.myObj) {
this.myObj = { };
}
第四种
1
2
3
4var global = this;
if (!global.myObj) {
global.myObj = { };
}第五种
1
2
3
4if (typeof myObj == "undefined")
{
var myObj = { };
}第六种
1
2
3
4if (myObj == undefined)
{
var myObj = { };
}第七种
1
2
3if (myObj === undefined) {
var myObj = { };
}第八种
1
2
3
4if (myObj == null)
{
var myObj = { };
}第九种
1
2
3
4if (!('myObj' in window))
{
window.myObj = { };
}第十种
1
2
3
4if (!this.hasOwnProperty('myObj'))
{
this.myObj = { };
}
####总结:
如果只判断对象是否存在,推荐使用第五种写法。
如果除了对象是否存在,还要判断对象是否有null值,推荐使用第一种写法。
除非特殊情况,所有变量都应该使用var命令声明。
为了跨平台,建议避免使用window表示顶层对象。
在Javascript语言中,null和undefined容易产生混淆。在可能同时涉及两者的情况下,建议使用”精确比较”运算符(===)。
(此文转至于阮老师的博客)