JavaScript中关于null的一切(1),前端基础开发

function greetObject(who) {

if (!who) {

return null;

}

return { message: Hello, ${who}! };

}

greetObject(‘Eric’); // => { message: ‘Hello, Eric!’ }

greetObject(); // => null

但是,在不带参数的情况下调用函数greetObject()时,该函数返回null。 返回null是合理的,因为who参数没有值。

2. 如何检查null


检查null值的好方法是使用严格相等运算符:

const missingObject = null;

const existingObject = { message: ‘Hello!’ };

missingObject === null; // => true

existingObject === null; // => false

missingObject === null的结果为true,因为missingObject变量包含一个null 值。

如果变量包含非空值(例如对象),则表达式existObject === null的计算结果为false

2.1 null 是虚值

nullfalse0''undefinedNaN都是虚值。如果在条件语句中遇到虚值,那么 JS 将把虚值强制为false

Boolean(null); // => false

if (null) {

console.log(‘null is truthy’)

} else {

console.log(‘null is falsy’)

}

2.2 typeof null

typeof value运算符确定值的类型。 例如,typeof 15是'number'typeof {prop:'Value'}的计算结果是'object'

有趣的是,type null的结果是什么

typeof null; // => ‘object’

为什么是'object'typoef nullobject是早期 JS 实现中的一个错误。

要使用typeof运算符检测null值。 如前所述,使用严格等于运算符myVar === null

如果我们想使用typeof运算符检查变量是否是对象,还需要排除null值:

function isObject(object) {

return typeof object === ‘object’ && object !== null;

}

isObject({ prop: ‘Value’ }); // => true

isObject(15); // => false

isObject(null); // => false

3. null 的陷阱


null经常会在我们认为该变量是对象的情况下意外出现。然后,如果从null中提取属性,JS 会抛出一个错误。

再次使用greetObject()函数,并尝试从返回的对象访问message属性:

let who = ‘’;

greetObject(who).message;

// throws “TypeError: greetObject() is null”

因为who变量是一个空字符串,所以该函数返回null。 从null访问message属性时,将引发TypeError错误。

可以通过使用带有空值合并的可选链接来处理null:

let who = ‘’

greetObject(who)?.message ?? ‘Hello, Stranger!’

// => ‘Hello, Stranger!’

4. null 的替代方法


当无法构造对象时,我们通常的做法是返回null,但是这种做法有缺点。在执行堆栈中出现null时,刚必须进行检查。

尝试避免返回 null 的做法:

  • 返回默认对象而不是null

  • 抛出错误而不是返回null

回到开始返回greeting对象的greetObject()函数。缺少参数时,可以返回一个默认对象,而不是返回null

function greetObject(who) {

if (!who) {

who = ‘Stranger’;

}

return { message: Hello, ${who}! };

}

greetObject(‘Eric’); // => { message: ‘Hello, Eric!’ }

greetObject(); // => { message: ‘Hello, Stranger!’ }

或者抛出一个错误:

function greetObject(who) {

if (!who) {

throw new Error(‘“who” argument is missing’);

}

return { message: Hello, ${who}! };

}

greetObject(‘Eric’); // => { message: ‘Hello, Eric!’ }

greetObject(); // => throws an error

这两种做法可以避免使用 null

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

文末

如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

JavaScript

含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

JavaScript

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值