JS的未定义和undefined

2018-10-22  本文已影响132人  张培_

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而不是将其当做undefined,JS只会将没有赋值的变量当做一个没有错误的undefined


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

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

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

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


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

if(typeof value === 'undefined'){
    alert('value没有定义过')
}
上一篇 下一篇

猜你喜欢

热点阅读