不二如是 发表于 2020-7-23 17:51:43

用好 null 和 undefined

本帖最后由 不二如是 于 2020-7-23 19:06 编辑

null 与对象引用有关系,表示为空或不存在的对象引用。

当声明一个变量却没有向它赋值的时候,它的值就是 undefined 。

undefined 的值会在如下情况中出现:


[*]从一个对象中获取某个属性,如果该对象及其 prototype 链中的对象都没有该属性,该属性的值为 undefined
[*]一个函数如果没有显式通过 return 语句将返回值返回给其调用者,其返回值就是 undefined,但在使用 new 调用函数时例外
[*]JavaScript 的函数可以声明任意多个形参,当该函数实际被调用时,传入的参数的个数如果小于声明的形式参数的个数,那么多余的形式参数的值为 undefined

如果对值为 null 的变量使用 typeof 检测,得到的结果是 “object”。

而 typeof undefined 的值为 “undefined”。

null==undefined,null!==undefined。

与 null 不同,undefined 不是 JavaScript 的保留字,在 ECMAScript v3 标准中才定义 undefined 为全局变量,初始值为 undefined 。

因此,在使用 undefined 值时就存在一个兼容问题(早期浏览器可能不支持 undefined)。

除了直接赋值和使用 typeof 运算符外,其他任何运算符对 undefined 的操作都会引发异常。

不过,可以声明 undefined 变量,然后查看它的值,如果它的值为 undefined,则说明浏览器支持 undefined 值。

例如:

var undefined;
alert(undefined);
如果浏览器不支持 undefined 关键字,可以自定义 undefined 变量,并将其赋值为 undefined 。

例如:

var undefined=void null;
声明变量为 undefined,将其初始化为表达式 void null 的值。

由于运算符 void 在执行其后的表达式时会忽略表达式的结果值,而总是返回值 undefined 。

因此利用这种方法可以定义一个变量为 undefined,并将其赋值为 undefined 。

既然是将变量 undefined 赋值为 undefined,还可以使用如下方式:

**** Hidden Message *****
或者使用没有返回值的函数:

var undefined=function(){}();
alert(undefined);//"undefined"

可以使用 typeof 运算符来检测某个变量的值是否为 undefined:

var a;
if(typeof a=="undefined"){}



如果喜欢,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢本系列Js帖子,请订阅 专辑 -->(传送门)(不喜欢更要订阅{:10_297:} )

lilbeast 发表于 2020-9-15 12:02:22

1

fumouren 发表于 2021-8-4 09:12:50

学习

j12696 发表于 2021-8-4 15:29:16

666

arqady 发表于 2021-12-7 10:57:59

6

jack6666 发表于 2022-10-15 13:20:51

1

maxwellxxl 发表于 2022-10-20 11:21:49

{:5_90:}

peanutfs13 发表于 2023-8-30 16:00:14

感谢不二!
页: [1]
查看完整版本: 用好 null 和 undefined