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对象下面去找的。(后面解决)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值