js报未定义_JS的未定义和undefined

background

if (window) {

console.log('browser side rendering')

} else {

console.log('server side rendering')

}

当我启项目的时候,不断的报错:

window is not defined

原因

在JS中,有一种错误是:ReferenceError: "x" is not defined

造成这种错误出现的时机是:当你使用了一个从没有定义过得变量

那么问题来了:

Q1:从没有定义过得变量的值那么这个值的value不就是undefined,那么如果使用这个变量作为if的条件,为啥不能判断呢?

对于JS而言,一旦解释到没有定义的变量,就会直接throw上面的error。

但是定义过但是没有赋值的变量,也就意味着这个变量的value是undefined,对于JS而言不是一个错误,所以if可以使用这个变量作为条件

----> JS中没有定义的变量会throw error而不是将其当做undefined,JS只会将没有赋值的变量当做一个没有错误的undefined

Q2:那么为啥会经常在代码里看到这波操作props && props.a && props.a.b?

如果写出这样的代码,一般就是想使用props.a.b但是又害怕props或者props.a不存在导致throw error。但是这样写按照之前的理解怎么能防止error呢?

对于以上的代码,我只能说首先,props一定是定义过的或者说一定是存在的,否则这段代码会直接throw error

Q3: 如果props是一个空object,说明props.a一定不存在,为啥不报错呢?

在JS中,使用一个对象不存在的属性是不会报错的,不过这个属性的value是undefined.

----> JS对于不存在变量会throw error对于不存在的属性不会报错。

Q4:那么我该如何check一个变量是否被定义过呢?

只有一个办法可以check变量是否定义过,使用typeof

if(typeof value === 'undefined'){

alert('value没有定义过')

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值