点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
大家好!我是/小郑搞码事/的小郑
今天和大家分享两个你不一定用过,但是用了你一定会说好的JavaScript操作符。
知道三元运算符吗?对,就是那个用到吐的问号加冒号。
? :
相信无人不知道它,但如果你只知道这一个带问题的操作符那就得往下看了。
今天小郑给大伙再说两个。
第一个:?.
这个操作符有啥用呢?
举个例子:看下面这个对象
![331de0094d2a5d6617cd0e2378121dfc.png](https://i-blog.csdnimg.cn/blog_migrate/b83b7fa232641c8041523995e3388056.jpeg)
我现在要去取它里面三层属性内的值。这样
obj2.prop.intro.age
那实际上obj2的属性prop下并没有属性intro。所以之前我们通常都要先判断属性是否有,再来取值。简单的写法,可能是这样的。
obj2.prop.intro && obj2.prop.intro.age
这个时候,没有时,返回就是undefined,而不会报错。
有没有觉得这样写总差点意思。这会有更好的写法来了。
obj2.prop.intro?.age
当然,使用的同学,记得用babel转一下。
第二个:??
这个操作符又有啥用呢?
没实际用处,甚至我没用过的语法,我基本不说的。
平常我们给默认值,用得最多的方式是使用or,就这个符号
||
比如,null || 'yes'
这个得到的就是yes字符串。
现在你可以这样写了
null ?? 'yes'
输出同样是yes字符串
那问题来了,两者有什么不同?
看下面这张图中代码运行的结果:
![08b88cf08e10b6bb534158a7a9ebaac2.png](https://i-blog.csdnimg.cn/blog_migrate/a01d898f1483f428b404c87fa8ca27c6.jpeg)
简单的只需要找不同。
结论是:??运算符也能给我们分配默认值,不过它会忽略0和空字符串等错误值。
比如:0 ?? 'yes'
就是0
0也可以算是一个数字嘛。
前端能力越来越强,技术变化日新月异,唯有基础扎实才能完美应对,这个圈子坚持每日为您提供前端最需要掌握的基础知识点。前端知识天天学。