关灯
开启左侧

JavaScript undefined

[复制链接]
紫米 发表于 2018-12-21 12:35:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
声明一个变量,但不给它赋值:
  1. var a
复制代码
那么变量 a 的值就会默认为 undefined。
我们不妨这么认为:变量声明时,如果未赋值,那么系统会自动赋值 undefined - 实际上,JavaScript 规范里就是这么规定的 :
| Any variable that has not been assigned a value has the value undefined
换句话说,var a 与 var a = undefined 是等效的。
undefined 变量
上面说,undefined 是一个值,实际上,它还是一个变量。
我们知道,JavaScript 下值是不能赋值的,比如我们写:
  1. 5=6
复制代码
浏览器就会报错:
| Uncaught ReferenceError: Invalid left-hand side in assignment
但我们可以写:
  1. undefined = 6
复制代码
没有报错。因为这里的 undefined 是全局环境中的变量 - 浏览器下是 window.undefined,Node.js 下则是 global.undefined。
那么,此时 undefined 变量的值是 6 吗?
我们可以检查一下:
  1. undefined === 6
复制代码
结果是 false。这是因为,undefined 是不可写(Writable: false)的,Writable 定义里说:
| trying to write into the non-writable property doesn't change it but doesn't throw an error either
尝试给 Writable: false 的属性赋值不会改变它的值,但也不会抛出错误。
Undefined 类型
JavaScript 有六大基础类型:
  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol(ES2015 新增的)
String、Number 类型都有很多值,Boolean 只有两个值,而 Undefined 类型则只有一个 undefined值。是了,我把它称作 JavaScript 里的三位一体,它既表示基础类型,又表示变量名,还表示值。
判断 undefined
如前所述,因为 undefined 即是基础类型,又是值,所以理论上,判断一个变量值是否 undefined,我们有两种方案:
  • x === undefined
  • typeof x === 'undefined'
当然,后者要更为保险。在 x 变量未曾声明的情况下,后者不会抛出错误,前者会抛出 ReferenceError: x is not defined 的错误。


 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-9988-316

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )