fteair 发表于 2020-5-14 15:12:24

javascript的null和undefined

只要是说到js的变量和数据类型,就脱不开null和undefined,这兄弟俩就是js的重要基础,不可不察,无数的同学们都用过放大镜多角度多批次地研究过这兄弟俩,真是深受欢迎。^-^js也真是怪异,有个null不够,还要折腾出个undefined。虽然被诟病,但这就是设计。 在c#和java中,null就是表示空,没有分配内存。在js中的null采用Number(null)的结果是0,代表什么,代表这不是空,仅仅是空值,是没有值,它的数据类型是"object"。 那么为了表示空,所以设计者搞了一个undefined,它有单独的数据类型就是"undefined"。使用Number(undefined)的结果是NaN,转换结果也能达到设计目的。造成这样的设计结果,表达式中的数据类型转换起了关键作用。 未定义的变量或已定义的但未赋值的变量就表示空,就是undefined。undefined更多的是javascript本身使用。比如,码农要想删除一个对象的属性不是把这个属性赋上undefined,因为这样属性还是在,用hasOwnProperty检测一下这个属性还是存在,在有些逻辑需要判断的地方就会出问题,要是删除属性就前置delete。var o1={p1:'v1',p2:'v2'};o1.p2=undefined;o1.hasOwnProperty('p2'); //true
要删除数组元素,为了没有副作用,那么就用splice。码农要是使用undefined来赋值就要想想清楚了。 对于码农来说,更多的是使用null,可以将一个变量赋上空值,断开和对象实例的联系,保证垃圾回收,也可以以备该变量符号后续使用。 null和undefined比较的时候也是坑坑坑null == undefined //truenull == false //falseundefined == false //false
虽然怪异,但这就是结果,这就是设计。

fteair 发表于 2020-5-14 15:19:12

{:soso__2044186135943287205_3:}

张兴康 发表于 2020-5-14 17:49:38

{:soso__15960872840493620282_2:}

张兴康 发表于 2020-5-16 14:18:31

{:soso__4011813854091704040_1:}

fteair 发表于 2020-5-19 09:15:08

张兴康 发表于 2017-6-16 14:18


{:3_52:}{:3_52:}

张兴康 发表于 2020-5-19 14:41:40

fteair 发表于 2017-6-19 09:15


{:2_33:}{:2_35:}

fteair 发表于 2020-5-19 17:22:28

张兴康 发表于 2017-6-19 14:41


{:3_42:}{:3_42:}

张兴康 发表于 2020-5-20 15:53:00

fteair 发表于 2017-6-19 17:22


{:2_33:}
页: [1]
查看完整版本: javascript的null和undefined