首页 > 其他分享 >JS中的undefined 与 null

JS中的undefined 与 null

时间:2023-05-23 10:01:37浏览次数:33  
标签:foo console log JS let null undefined

在 JavaScript 中, undefined 和 null 是两个特殊的值,用于表示缺失或空值。



undefined 是一个表示未定义或未赋值的原始值。它在以下情况下使用:

1. 变量声明了但未初始化时,默认为 undefined 。

let x;
console.log(x); // undefined

 

 

2. 访问对象属性或数组元素时,如果该属性或元素不存在,则返回 undefined 。

let obj = { name: "John", age: 30 };
console.log(obj.address); // undefined

let arr = [1, 2, 3];
console.log(arr[3]); // undefined

 


3. 函数没有明确返回值时,默认返回 undefined 。

 

function foo() {
// 没有明确返回值
}

console.log(foo()); //undefined

 



相比之下, null 是一个表示空值或没有对象引用的特殊值。它通常由程序员显式赋予变量或属性,表示该值为空。例如:

let x = null;
console.log(x); // null

 


null 主要用于以下情况:

1. 初始化一个变量,以便稍后将其设置为对象。

let obj = null; // 初始化为 null
obj = { name: "John", age: 30 }; // 后续设置为对象

 

2. 表示函数的参数不具有对象引用。

function foo(arg) {
  if (arg === null) {
    console.log("参数为空");
  } else {
    console.log("参数不为空");
  }
}

foo(null); // 参数为空
foo("Hello"); // 参数不为空

 


需要注意的是, undefined 和 null 是不同的类型。 undefined 是一个类型为 undefined 的值,而 null 是一个类型为 object 的值。然而,在相等性比较( == 或 === )中,它们是相等的,因为它们都表示着相同的含义——空值。

console.log(undefined == null); // true
console.log(undefined === null); // false

 


在编程中,通常使用 undefined 来表示未定义或未赋值的状态,使用 null 来表示有意地将一个值设置为空。



当涉及到 undefined 和 null 的更多细节时,还有一些要注意的事项:

1. 类型检查

- 使用 typeof 操作符检查 undefined 值时,会返回字符串 "undefined" 。
- 使用 typeof 操作符检查 null 值时,会返回字符串 "object" 。这是一个历史遗留问题, null 被错误地标识为对象类型。

let x;
console.log(typeof x); // "undefined"

let y = null;
console.log(typeof y); // "object"

 

2. 默认参数值

- 当函数的参数没有传递或传递的值为 undefined 时,可以使用默认参数值。
- 当函数的参数传递 null 值时,会将 null 视为有效值,而不会触发默认参数值。

function foo(x = "default") {
    console.log(x);
}

foo(); // "default"
foo(undefined); // "default"
foo(null); // null

 

3. 安全导航操作符

- 使用安全导航操作符( ?. )可以避免访问对象属性或调用方法时出现 undefined 或 null 的错误。如果属性或方法不存在,则会返回 undefined 。

let obj = { name: "John", address: { city: "New York" } };

console.log(obj.address?.city); // "New York"
console.log(obj.address?.zipCode); // undefined

 

4. 变量赋值:

- 在变量赋值时, undefined 被视为一个变量可以接收的有效值。
- 而 null 被视为一个特殊值,通常用于表示空或未定义的状态。

let x = undefined;
console.log(x); // undefined

let y = null;
console.log(y); // null

 

 

标签:foo,console,log,JS,let,null,undefined
From: https://www.cnblogs.com/ronaldo9ph/p/17422449.html

相关文章

  • Uncaught TypeError: Cannot read properties of undefined (reading ‘install‘)
     出现该情况的原因是vue-router安装的版本太高,一般vue2的项目对应的版本是vue-router@3版本①在控制台输入: [email protected] 重新安装vue-router即可解决......
  • 对已有的表字段修改设置默认值,会影响原来数据中为null的字段数据吗?
    1.新建表t_userCREATETABLE`t_user`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`name`varchar(100)NOTNULL,`age`int(11)NOTNULL,`male`varchar(100)NOTNULL,`height`int(11)NOTNULL,`if_delete`tinyint(1),PRIMARYKEY(`id`))ENGINE......
  • 读取数据库JSON格式数据信息处理办法记录
    遇到的问题:现有代码如下defListQuery(self):sql01="SELECTcontentFROMzt_user_customdata\WHERErealname='alarm-server'ANDaccount='alarm-server'"result01=self.CommonQueryFunc(sql01)result02=str(resu......
  • js中实现文件上传下载的三种解决方案(推荐)
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续......
  • vue用qrcodejs2生成二维码,解决多个二维码追加的问题
    vue使用qrcodejs2生成二维码1、安装qrcodejs2npminstallqrcodejs2 2、代码//这个div用来展现二维码<divid="twoImageId"></div>//生成二维码的方法generateQRCode(classId,value){ newQRCode(document.querySelector(classId),{ text:value, width:......
  • 【iOS开发】UIWebView调用JS点击事件(stringByEvaluatingJavaScriptFromString)
    一、场景描述产品需求是移动端app要调用h5页面,然后监听h5代码中的某个方法,最终执行h5中的具体代码。二、具体代码.m文件@interfaceViewController()<UIWebViewDelegate>@property(nonatomic,strong)UIWebView*webView;@end@implementationViewController-(void)viewDid......
  • 揭秘神秘的JS混淆加密技术
    在编程的世界里,沉香舞动着一种强大的力量,就像母亲为了救子不惜一切的决心。而在JavaScript的领域中,我们也有一种神秘的技术,它能够将代码变得晦涩难懂,宛如沉香救母一般,守护着程序的安全。今天,我将带你揭开这个神秘的面纱,一窥JS混淆加密技术的奥秘。JavaScript混淆加密是一种将代码进......
  • 揭秘神秘的JS混淆加密技术
    在编程的世界里,沉香舞动着一种强大的力量,就像母亲为了救子不惜一切的决心。而在JavaScript的领域中,我们也有一种神秘的技术,它能够将代码变得晦涩难懂,宛如沉香救母一般,守护着程序的安全。今天,我将带你揭开这个神秘的面纱,一窥JS混淆加密技术的奥秘。JavaScript混淆加密是一种将代码进......
  • 一文读懂面试官都在问的Fastjson漏洞
    Fastjson1.2.24-RCE漏洞漏洞简介fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将JavaBean序列化成JSON字符串,这样得到字符串之后就可以通过数据库等方式......
  • sql server Json简单操作
    操作环境:SQLServerManagementStudio15.0.18424.0SQLServer管理对象(SMO) 16.100.47021.0+7eef34a564af48c5b0cf0d617a65fd77f06c3eb1MicrosoftAnalysisServices客户端工具 15.0.19750.0Microsoft数据访问组件(MDAC) 10.0.19041.2604MicrosoftMSXML ......