13.说一说null 和 undefined 的区别,如何让一个属性变为null
得分点:
操作的变量没有被赋值、全局对象的一个属性、函数没有return返回值、值
null特指对象的值未设置undefined == null、undefined !== null
标准回答:
1.undefind
①undefind是全局对象的一个属性,当一个变量没有被赋值或者一个函数没有返回值或者某个对象不存在某个属性却去访问或者函数定义了形参但没有传递实参,这时候都是undefined。
②undefined通过typeof判断类型是'undefined'。
③undefined == undefined
④undefined === undefined
2.null
①null代表对象的值未设置,相当于一个对象没有设置指针地址就是null。
②null通过typeof判断类型是’object’。
③null === nullnull == nullnull == undefinednull !== undefined
3.undefined表示一个变量初始状态值,而null则表示一个变量被人为的设置为空对象,而不是原始状态。 在实际使用过程中,不需要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。
4.😄让一个变量为null,直接给该变量赋值为null即可。
加分回答:
null其实属于自己的类型Null,而不属于Object类型,typeof之所以会判定为Object
类型,是因为JavaScript数据类型在底层都是以二进制的形式表示的,二进制的前三位为 0 会被typeof
判断为对象类型,而null的二进制位恰好都是0,因此,null被误判断为Object类型。
对象被赋值了null以后,对象对应的堆内存中的值就是游离状态了,GC会择机回收该值并释放内存。
因此,需要释放某个对象,就将变量设置为null,即表示该对象已经被清空,目前无效状态。
实用技巧:
1.table表格内的渲染
{
label: 'BD.head.operation',
defaultVisible: true,
fixed: 'right',
minWidth: 60,
operations: [
{
clickEvent: (e) => {
this.dialogData = toolUtil.deepCopy(e);
this.BdJumpToBing() // 点击跳转到详情界面
},
text: 'binding', // 提示本按钮的用途
authLocations: ['device.manager.switch.detail.config.BD.binding'],
iconClass: 'iconfont iconyilianjie',
disableFunc: row => {
if (!row['config-status']) {
return true
} else {
if (['', null, undefined].includes(row['config-status']['sync-status'])) {
return true
} else {
if (row['config-status']['sync-status'] === 'SYNC') {
return false
} else {
return true
}
}
}
}
}
]
}
💞💖💓💗每个时代,
✨🌟⭐️💫都悄悄犒赏会学习的人。

本文详细探讨了JavaScript中null和undefined的区别,指出undefined是变量未赋值或函数无返回值等场景的表示,而null则代表对象值未设置。在实际应用中,通常使用null来释放或标记对象无效。了解这些差异有助于优化代码和内存管理。
572

被折叠的 条评论
为什么被折叠?



