ECMAScript/JavaScript 中 undefined 是如何被定义的?
在 JavaScript 中, undefined 表示一个变量没有被赋值。当你声明一个变量但没有初始化它时,它的值就是 undefined。它在全局环境中也是一个默认的全局变量。
JavaScript 中的 undefined 既是一个数据类型,也是一个值。它的类型是 undefined,值是 undefined。变量值为 undefined 时,它是一个 falsy 值,也就是说,在布尔操作中会被转换为 false。
下面是一个例子:
// javascriptcn.com 代码示例 var x; console.log(x); // undefined var y = undefined; console.log(y); // undefined if (x === undefined) { console.log('x is undefined'); // x is undefined } if (y === undefined) { console.log('y is undefined'); // y is undefined } if (!x) { console.log('x is falsy'); // x is falsy }
undefined 与 null 的区别
undefined 和 null 在 JavaScript 中都表示 “没有值”,但是它们的区别在于 undefined 是未定义的变量,而 null 表示的是空对象指针。
var a; console.log(a); // undefined var b = null; console.log(b); // null
你可以使用 typeof 操作符检测变量是否为 undefined。当变量没有声明时,使用 typeof 操作符也得到 undefined:
console.log(typeof x); // undefined console.log(typeof z); // undefined
如何避免 undefined 的问题?
undefined 可能会导致问题,特别是在你尝试访问一个未初始化的变量时。为了避免这样的问题,我们可以使用 typeof 操作符对变量进行检测。
如果一个变量未定义,typeof 将返回 "undefined",这将避免任何类型错误。
if (typeof myVariable === 'undefined') { myVariable = 'default value'; }
当然,还有其他一些方法来避免 undefined 的问题,例如始终初始化变量、使用默认参数等。
总结
- undefined 表示变量未被赋值,是默认的全局变量
- undefined 是一个数据类型,同时也是一个值,并且是 falsy
- undefined 和 null 都表示 “没有值”,但是它们的区别在于 undefined 是未定义的变量,而 null 表示的是空对象指针
- 使用 typeof 操作符检测变量是否为 undefined
- 避免 undefined 的问题,例如始终初始化变量、使用默认参数等
参考资料:
- https://developer.mozilla.org/en-US/docs/Glossary/undefined
- https://www.w3schools.com/js/js_type_conversion.asp
- https://www.w3schools.com/js/js_typeof.asp
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6549a2937d4982a6eb3dc299