Undefined 是一个原始类型,只有一个值 undefined,代表未定义。
从概念上讲,undefined 表示值的缺失,null 表示对象的缺失。
产生 undefined 的操作
-
变量声明时没有初始化(
let x;),隐式初始化为undefined。 -
没有值(
return;)的return语句,隐式返回undefined。 -
访问不存在的对象属性(
obj.iDontExist),返回undefined。 -
void运算符返回的结果是undefined。 -
许多像
Array.prototype.find()和Map.prototype.get()的方法,当没有找到元素时,返回undefined。
undefined 变量
undefined 是全局对象的一个属性,所以 undefined 是全局作用域的一个 变量。
undefined 不是保留字,所以它有可能在非全局作用域中被当作标识符(变量名)来使用。这样做是一个非常坏的主意,因为这样会使你的代码难以去维护和排错。(使用 void 0 表达式可以安全地得到 undefined,但使用 undefined 变量不一定能得到 undefined)
参考
undefined
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined