HTML5学堂:JavaScript中存在两个“空”,一个是null,一个是undefined,那么这两个有什么区别呢?两者又分别应用在什么时候呢?针对来两者进行数学转换的话,两者又分别呈现出什么内容呢?我们一起来看一下~
从字面上来理解undefined和null其实相对比较简单,undefined表示的是声明一个变量之后我们并没有给它定义内容。而null表示的是有定义,定义的是一个空对象。
将undefined和null均作为if语句的条件时,我们会发现,两者均被转换成了布尔值false。看下面的实例:
查看原来的JavaScript书籍时发现,在1995年JavaScript诞生时,最初像JAVA一样,只设置了null作为表示"无"的值。但是,JavaScript的设计者并不希望表示“无”的是一个对象;另外,由于JS属于弱变量类型语言,所以对于数据之间进行运算的时候,会进行自动的数据类型转换,null会自动转换为0,此时如果代码是由于自动数据类型转换而出现问题,是很难找到错误的。基于这样两个原因,就有了而今的undefined。
关于上面提到的自动数据类型转换,写个实际的例子来解释一下,下面这个例子当中,原本num是一个数字,但是当数字和字符串运算时,“+”就从原来的加号含义就变成了连字符含义,组成了一个字符串。这个结果后面的过程就是,现将num数字转换为字符串,然后再将两个字符串相互连接。
欢迎沟通交流~HTML5学堂
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
上面这种想法是好的,但是在实际操作中证明并不是那么可行,目前,null和undefined基本是同义的,只有一些细微的差别。
null表示"没有对象",即该处不应该有值。
对于函数的参数,为了表示该函数的参数不是对象,会使用null。这种用法在传参时经常遇到此类应用
对象原型链的终点是null
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
1 变量被声明了,但没有赋值,默认为undefined
2 调用函数时,应该提供的参数没有提供,该参数默认为undefined
3 对象没有赋值的属性,该属性的值默认为undefined
4 函数没有返回值时,默认返回undefined
欢迎沟通交流~HTML5学堂