请教一下一个使我震惊的 js 语法 ?.(没错,看起来很像三目但却不是:而是.)

2020-04-16 14:29:18 +08:00
 devwolf
举例
let a = {a:"1",b:"2"}
console.log(a?.a)

契机:另一个组的同事在一个 angular 项目里发现了这个语法的使用,
通过关键字查了一下也就这么个 csdn 的结果
《 angular 中的 ? 和 !》 https://blog.csdn.net/weixin_30908941/article/details/95594290

里面除了交代?可以判断前面的变量是否为 null 或 undefined 再执行后面,还有个!判断后面键所对应的值是否为 null 或 undefined,不过没有成功在 js 里再现这个!。

就我个人在网上的搜索结果来看,感觉这个?.的写法比!!还要冷门,用途的效果上个人感觉类似 react 写 jsx 进行页面渲染时的&&或者?:

当然,我自己的这些肤浅猜测总结也没什么营养,还请各位有了解或者感兴趣的分析一波这个?.吗
15600 次点击
所在节点    Node.js
106 条回复
Flourite
2020-04-16 14:32:01 +08:00
这语法在其他语言也不是很罕见的,比如 swift
asAnotherJack
2020-04-16 14:33:19 +08:00
kotlin 也有这种语法
mercury233
2020-04-16 14:33:51 +08:00
可空类型,不算冷门
murmur
2020-04-16 14:34:14 +08:00
?。这语法太超前了,虽然各种 objectPath 类组件早就在用,可以一次访问很深层的节点,不用一层层判空
cmdOptionKana
2020-04-16 14:34:26 +08:00
现在主流语言是天下语法一大抄,越来越趋同了。
skies457
2020-04-16 14:35:11 +08:00
devwolf
2020-04-16 14:35:50 +08:00
感谢楼上的各位解疑,原来是其他语言已经存在的语法,get 了
Lin0936
2020-04-16 14:36:43 +08:00
最近在 kotlin 里写这个都写吐了. 之前 swift 的项目里也用到很多.
yaphets666
2020-04-16 14:38:13 +08:00
我写了一年多 js 也 不知道这个...我是不是太菜了
crs0910
2020-04-16 14:38:48 +08:00
你还可以使用 ?? 来代替 ||,避免需要判断值是不是 0 这种情况
关键词:Nullish Coalescing
vivipure
2020-04-16 14:39:15 +08:00
dart 也有。这是 ES2020 的新语法,挺好用的,不用在写什么 a && a.b 之类的了。
aaronlam
2020-04-16 14:39:45 +08:00
刚开始看到时,我也是很震惊的。
但是实话实说,这个语法的确很实用,不对吗?
littleylv
2020-04-16 14:40:51 +08:00
写 swift 的时候经常这么写。现在的语言很多都开始互通有无了,都会相互借鉴对方的一些东西
oneisall8955
2020-04-16 14:42:24 +08:00
kotlin 里面有,thymeleaf 模板写对象判断非空也是用这里的语法
islxyqwe
2020-04-16 14:49:02 +08:00
新版本 ts 提前支持的 Optional Chaining 等 ES2020 的新语法拉
liuy1994g
2020-04-16 14:55:16 +08:00
es 里还在提案吧
noobma
2020-04-16 14:56:09 +08:00
关注 ts 的话应该不会觉得这个写法冷门😂
Justin13
2020-04-16 14:59:15 +08:00
建议关注 ECMA262 repo
luob
2020-04-16 15:03:21 +08:00
写 js 的不都是天天跟着最新语法标准走吗,这种最近大半年都在谈的语法就算没用过,总不至于没听过吧……

还是说现在前端已经足够成熟,大家都不学新内容了?
crz
2020-04-16 15:03:21 +08:00
主要是新,冷门应该不至于,毕竟很实用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/663072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX