美文网首页
JS的未定义和undefined

JS的未定义和undefined

作者: 张培_ | 来源:发表于2018-10-22 21:08 被阅读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。
  • 但是定义过但是没有赋值的变量,也就意味着这个变量的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没有定义过')
}

相关文章

  • JS的未定义和undefined

    background 当我启项目的时候,不断的报错: window is not defined 原因 在JS中,...

  • null 和 undefined 的区别 ==和===的区别

    1.null 和 undefined 的区别 undefined 为变量未定义的值undefined表示"缺少值"...

  • JS的数据类型、运算符和表达式

    JS分为原始类型和引用类型 原始类型 原始类型分为数值型、字符串型、布尔型、未定义型(undefined)、nul...

  • null和undefined的区别

    null和undefined null: 空,没有undefined: 未定义,没有'': 空字符串,没有0: 也...

  • 我的JS笔记 -- 类型检测

    在JS中数据有七种内置类型:空值( null)、未定义( undefined)、布尔值( boolean)、数字(...

  • 我的JS笔记 -- 类型转换

    在JS中数据有七种内置类型:空值( null)、未定义( undefined)、布尔值( boolean)、数字(...

  • 你不知道的js温习

    js循环双值 typeof 妙用,防范机制,不会导致未定义的变量报错 而是返回undefined 字符串方法 借用...

  • 前端面试题

    1. Undefined 和 null 的区别? undefined 的字面意思就是:未定义的值 。这个值的语义是...

  • 常见区别总结

    undefined 和 null undefined代表的含义是 未定义,转为数值时为 NaN变量被声明了,但没有...

  • Undefined类型

    Undefined定义 Undefined 类型表示未定义,它的类型只有一个值,就是 undefined。任何变量...

网友评论

      本文标题:JS的未定义和undefined

      本文链接:https://www.haomeiwen.com/subject/fxjnzftx.html