JavaScript中undefined与not defined的区别详解

作者:异步漫步

时间:2026-10-27

浏览:451

本文通过具体测试案例解析JavaScript中undefined与not defined的区别。未声明变量访问会触发ReferenceError(not defined),而已声明但未赋值的变量或对象缺失属性返回undefined。文章还探讨了typeof行为、逻辑或运算及条件判断中的表现,帮助开发者准确区分这两种状态。

文章目录

undefined与not defined的核心区别

经过研究,JavaScript中的undefined和not defined存在显著差异。从语义角度分析,两者含义不同,具体区别如下文所述。


测试环境:操作系统为ubuntu。


测试浏览器:Chrome。



测试案例与现象分析

测试案例1:


console.log(a)


报错 ReferenceError: a is not defined



测试案例2:


var a


console.log(a)


无报错,但是输出undefined



测试案例2:


var b = {};


console.log(b.a)


无报错,但是输出undefined



测试案例3:


function c() {


}

var d = new c();


console.log(d.a)


无报错,但是显示undefined


typeof与逻辑运算表现

关于typeof:


以上所有用于测试的对象,使用typeof返回的结果均为String("undefined")。


关于或运算 ||:


var d = a||3


报错 a not defined


var a;


var d = a || 3


结果:d==3


var c = 22 || 44


c==22


var c = false || 33


c == 33


if(x) {


}

报错


var x


if(x) {


}

if内不执行



总结与语义辨析

总结:


JavaScript中存在两种undefined状态,虽然使用typeof返回的都是String("undefined")。


第一种是变量已定义但未进行任何操作,或者是某个对象中不存在的属性。这类undefined可以参与运算,适用于逻辑运算场景。


第二种是变量完全未定义且没有任何上下文背景(例如x.a,虽然对象x没有a属性,但对象x本身存在)。这类属于报错类型,不能被直接使用,除非通过typeof函数进行检查。


JavaScript中的或运算(||)并不返回布尔值,而是返回最后一个被计算的值。例如 1||2,因为1为真,2无需计算,所以 1||2 == 1;而 a||1 会报错。


var a; a|| 1 == 1;



查阅相关辞典翻译如下:


undefined可以翻译为:不明确的,即不知道用来做什么。


而 not defined 可以翻译为:未定义的。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章