当前位置:网站首页>JS中初始化对象为null和空对象的区别
JS中初始化对象为null和空对象的区别
2022-08-10 05:50:00 【Code devil】
在JavaScript中,对象类型为复杂数据类型,也叫引用数据类型。在我们声明一个对象的时候,可以给对象赋值一些基本数据,
const person = {
name: 'liudehua',
age: 23
}
但是有的时候我们声明了一个对象,并不想给这个对象赋值,那么有两种方式初始化这个对象。
// 方式1,直接给一个空对象
const person = {};
// 方式2, 将对象赋值为null
const person1 = null
但是这两种方式是有一些区别的:
- 在转换为布尔值的时候,空对象会转换为true,而null会转换为false,在我们直接用对象变量名来做一些判断的时候需要注意:
// 方式1,直接给一个空对象 const person = {}; // 方式2, 将对象赋值为null const person1 = null if(person) { console.log("会执行"); } if(person1) { console.log("不会执行"); }
- 在内存层面理解,在声明为一个空对象的时候,照样会在堆内存中开辟一个内存空间,声明为null的时候,这个引用会指向一个0x0的内存位置,不会在堆内存中创建一个内存空间。
- 但是当我们用typeof操作符去操作空对象与null类型的值的时候,返回值都是object类型
// 方式1,直接给一个空对象 const person = {}; // 方式2, 将对象赋值为null const person1 = null console.log(typeof person); // object console.log(typeof person1); // object
总结:声明一个对象的时候,如果无需赋具体的值,只需要初始化的时候,优先推荐赋值为null.
边栏推荐
猜你喜欢
随机推荐
UnityShader入门精要-渲染纹理 镜子 玻璃 效果
BUUCTF笔记(web)
OpenGL学习笔记(LearnOpenGL)-第四部分 着色器
数据库学习之表的约束
动态规划——从0-1背包问题到leetcode正则匹配
浅谈游戏中3种常用阴影渲染技术(3):阴影贴图
链表、栈、队列
3.事务篇【mysql高级】
QScroller的QScrollerProperties参数研究
2022河南萌新联赛第(五)场:信息工程大学 H - 小明喝奶茶
二叉树 6/15 76-80
强化学习_07_DataWhale深度Q网络进阶技巧
全网可达并设备加密
Analysis of minix_super_block.s_ninodes of mkfs.minix.c
全网可达,交换机和路由器的配置,vlan
unity守则(随时持续更新\自我总结)
Unity object pool implementation
UnityShader入门精要-高级光照基础
修改 QtCreator 配置解决 “无法运行 rc.exe” 问题
强化学习_12_Datawhale深度确定性策略梯度