JavaScript/TypeScript里undefined, null 和 空字符串''/""的区别
在JavaScript/TypeScript项目中,undefined
和null
的值都表示无,undefined
表示不存在定义,null
表示定义为空值的一个值;空字符串''/""
则表示是一个长度为0的字符串。
1. undefined
在JS中,undefined
表示不存在定义,即是一个“不存在”的成员(和Java等静态类型语言不同,JS/TS作为动态类型语言,存不存在只能在运行期才知道)。
常见的使用情况有:
- 变量已被声明了,但还没有被赋值:
let name; // undefined
- 调用一个有参数的函数,但参数没有提供:
function addAge(years:number){XXXX};
addAge(); // undefined
- 函数没有返回值时,默认返回undefined:
const name = getName(); //无返回值,name是undefined
- 对象没有赋值的属性的时候,该属性的值为undefined:
var obj = new Object();
obj.job; // undefined
- 判断一个变量是否存在:
name === undefined;
如果我们用typeof()
去看undefined
的类型,我们会发现返回的结果就是undefined:
typeof undefined; // 返回undefined
2. null
null
则表示有一个值被定义了,且定义为空值。即可以这么理解,有这么一个概念在,但没有实际的值。
所以设置一个值为null是合理的,比如说:obj.val = null;
,即obj.val
这个值是空值;但如果设置为undefined,就不合理了。
还有一点可以说明null
就代表定义为空值,即如果我们用null
和任何数字A进行算术转换时,null
都代表0,会返回A的值(我们这里以9为例):let res = 9 + null; // res的值就是9
。反之,如果我们用undefined
和任何数字进行算术转换,则会返回NaN(Not a Number)的结果:let res = 6 + undefined; //res会输出NaN
如果我们用typeof()
去看null
的类型,我们会发现返回的结果是object
:typeof null; // 返回object
。
注意1:null
与 undefined
的值是相等的,但类型不同:
null == undefined // true
null === undefined // false
注意2:JavaScript/TypeScript本身是不会将变量设为null
的;null
是用来让程序员表明某个变量是没有值的。
3. ''/""
空字符串会指向一个对象(会分配内存空间),代表一个长度为0的字符串。
如果我们用typeof()
去看空字符串
的类型,我们会发现返回的结果是string
:typeof "test string"; // 返回string
。
如果我们用值为数字的''/""
和任何数字进行算术转换,会返回数字本身+字符串代表的值的和作为结果:let res = 6 + "3"; //res会输出9
。
参考资料
- 点赞
- 收藏
- 关注作者
评论(0)