JS中的undefined 与 null

这篇具有很好参考价值的文章主要介绍了JS中的undefined 与 null。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 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

 

 文章来源地址https://www.toymoban.com/news/detail-455826.html

到了这里,关于JS中的undefined 与 null的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pair 是 C++ 标准库中的一个模板类,用于存储两个对象的组合

    pair 是 C++ 标准库中的一个模板类,用于存储两个对象的组合。它位于 utility 头文件中。 pair 类的定义如下: pair 类有两个公共成员变量: first 和 second ,分别用于存储两个对象。成员变量的类型可以是任意类型,包括内置类型、自定义类型和指针类型等。 以下是一个使用

    2024年02月09日
    浏览(43)
  • 将 Jupyter Notebook 用于 JavaScript (使用 Node.js 或 Deno 环境)

    熟悉 Python 的读者, 可能同样对 IPython 或 Jupyter 等项目 (如 Jupyter Notebook) 有所耳闻. 正如其名, IPython 项目让 Python 这门语言变得 “interactive”; 如: 交互式的 Shell 程序, 对交互式数据可视化以及 GUI 工具集的支持等等 (具体可见 IPython 项目的网站). 比如在 Notebook 中, 用户可以实现

    2024年02月07日
    浏览(46)
  • null和undefined区别

    1.undefined,表示无值。 比如下面场景: a. 变量被声明了,但是没有被赋值; b. 调用函数的时候,应该给函数传参却没有给函数传这个参数打印出来就是 undefined; c. 访问一个对象中没有的属性; d. 函数没有返回值时,默认就会返回undefined。 2.null表示此时还不是对象,例如在

    2024年02月11日
    浏览(51)
  • js 过滤两个数组中的相同元素

    encodeComponent() 不会对 ASCII 数字 或者   - _ . ! ~ * \\\' ( )   编码 。只对 #¥%@…… ....等编码 防止 服务端解析 这些地址 无法识别  相反 decodeComponent() 解码  js中encodeURIComponent函数的使用,加码解码_玉米妈妈-momoxifei的博客-CSDN博客 js中encodeURIComponent函数的使用,加码解码 https:

    2024年02月15日
    浏览(32)
  • 【Vue】Cannot set reactive property on undefined,null,or primitive value:undefined

    技术栈:vue + element 报错内容: Cannot set reactive property on undefined, null, or primitive value:undefined 如下图所示: 根据报错内容翻译一下,就是不能对 undefined,null 或者原始值为 undefined 的属性设置值。大白话就是不能对字段为 undefined,null 进行赋值,vue 是双向数据绑定。 总的来说,我

    2024年01月18日
    浏览(54)
  • JavaScript中的scrollTop(js中的scrollTop,滚动到顶部,javascript滚动到顶部)

    简述:scrollTop是JavaScript中一个非常有用且重要的方法,它用于获取或设置元素的垂直滚动条位置,实现各种滚动相关的功能,无论是回到顶部、滚动到指定位置还是监听滚动事件,都需要用到scrollTop,在本文中,我们将深入了解scrollTop的用法和实际应用,这是一张scrollTop的关

    2024年02月08日
    浏览(47)
  • 【JS】JavaScript中的this关键字

    目录 this是什么? this的指向 ①全局环境 ②构造函数 ③对象的方法 this的四类调用方式 ①作为对象方法调用 ②纯粹的函数调用 ③作为构造函数调用 ④使用apply、call、bind调用 举例说明 JavaScript  this  指的是它所属的对象。 它拥有不同的值,具体取决于它的使用位置:

    2024年02月14日
    浏览(45)
  • 报错TypeError: Class extends value undefined is not a constructor or null

    在执行npm run build的时候遇到了错误:TypeError: Class extends value undefined is not a constructor or null;而执行npm run serve是可以正常执行的,报错如下: Building for production... ERROR  TypeError: Class extends value undefined is not a constructor or null TypeError: Class extends value undefined is not a constructor or null

    2024年02月16日
    浏览(44)
  • 【零基础学JS - 14 】javaScript中的switch语句

    👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个平台找到我! 🏆 本文收录于专栏: 零基础学JavaScript,包含Jav

    2024年02月07日
    浏览(38)
  • TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操作。

    demo案例 TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操作。让我们来详细讲解它的输入参数、输出、属性和方法: 输入参数: TransformControls 构造函数通常接受两个参数: camera (THREE.Camera):用于渲染场景的摄像机。这个参数是必需的。

    2024年04月15日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包