鱼C论坛

 找回密码
 立即注册
查看: 2188|回复: 8

[奇技淫巧] 用好 null 和 undefined

[复制链接]
发表于 2020-7-23 17:51:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 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,还可以使用如下方式:

游客,如果您要查看本帖隐藏内容请回复

或者使用没有返回值的函数:
var undefined=function(){}();  
alert(undefined);//"undefined"  

可以使用 typeof 运算符来检测某个变量的值是否为 undefined:
var a;  
if(typeof a=="undefined"){  } 




如果喜欢,别忘了评分


                               
登录/注册后可看大图


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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-15 12:02:22 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-4 09:12:50 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-4 15:29:16 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-7 10:57:59 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-15 13:20:51 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-20 11:21:49 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-30 16:00:14 | 显示全部楼层
感谢不二!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-2 09:36:08 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 13:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表