js中怎么判断未定义的对象

摘要:1、今天在公司遇到一个问题?有一个页面是几个人在共用,而这个页面我们做的是弹出窗口,可以用到父页面加载好的一些对象。
2、其中一同事不知道其他人在用,就在公用的页面上面加了只有他页面才有的对象。
3、今天测试人员告诉我页面报错了;然后我打开调试工具,发现控制台报错了,“not find variable “xxx””;
4、然后就加了判断结果还是报错;判断的代码如下

// 这是我们判断是写的方法
function isEmpty(obj){
    if(typeof obj == "undefined" || obj == null || obj == ""){
        return true;
    }else{
        return false;
    }
}

// 下面是对公共页面判断
if(!isEmpty(xx) && xx.yy){
    // 我的本意是判断这个对象是否存在,如果存在才继续执行后面的代码
}

// 改用另外的方式判断
if(typeof xx != "undefined" && xx.yy){
    // 这样是可以执行的
}

分析如下:

传值:只是将变量的值传入函数,函数会另外配置内存保存参数值,所以并不会改变原变量的值。

传址:***将变量实际保存的内存位置传入函数***,所以如果在函数中变更参数的值,也会同时变动原参数的值。

数字、字符串和布尔----传值

对象、数组和函数----传址

字符串对象-------传址

1、如果把未定义的对象当作参数传递–相当于传址,就会去取变量实际保存的位置,但是变量根本没有声明/定义,内存中是找不到的,所以就报 not find vairable;
2、至于typeof 为什么可以判断,个人认为它应该是在window对象下面去找的。(后面解决)

你可能感兴趣的:(JavaScript)