TC39中文讨论群

Ecma International, Technical Committee 39 - ECMAScript

u-cha 1 week ago
@黄玄Hux 区别就是??与?.只算null和undefined
u-eccha 1 week ago
明白了[emoji] slightly stricter
u-cha 1 week ago
这是为啥发明了个词nullish,一看就跟falsy有点像,但不一样
u-eccha 1 week ago
也是煞费苦心[emoji]
u-cha 1 week ago
优先级问题主要是在最常见的混用case如a>b??c中你的期望
u-eccha 1 week ago
这个很 tricky 啊
u-cha 1 week ago
目前是(a>b)??c
u-eccha 1 week ago
Property access 的优先级那么高,?. 的优先级应该也很高,那么 ?? 应该也比 logical 高……
u-eccha 1 week ago
好吧为什么
u-eccha 1 week ago
a>b 返回 bool 啊,doesn’t make any sense to me
u-cha 1 week ago
但a>b不可能是nullish,所以后面就是dead code
u-cha 1 week ago
现在的优先级是和c#一样
u-eccha 1 week ago
Swift 呢
u-cha 1 week ago
swift kotlin是比>高
u-eccha 1 week ago
好的我站着两个
u-cha 1 week ago
不过对js其实还不够高,如a+b??c
u-cha 1 week ago
有一样的问题
u-efdedhj 1 week ago
现在的优先级有没有任何有效的use case?
u-cha 1 week ago
我现在开的issue建议先强制括号,这样可推迟这个问题以后再决定[emoji]
u-efdedhj 1 week ago
[emoji]
u-cha 1 week ago
但它本来就有二义,两种都可能是你想要的
u-efdedhj 1 week ago
话说操作符优先级这个东西还是加括号成本最低
u-eccha 1 week ago
是诶为什么 + 比 ?? 高……
u-cha 1 week ago
@JUSTICE 是的,至少在一开始这样是能保护开发者的
u-cha 1 week ago
@黄玄Hux 因为在斯威夫特当中,他当中有一些运算符是nullable的,比如as?
u-eccha 1 week ago
然后 + 已经在前面了是吗
u-cha 1 week ago
如 x as? T ?? defaultValue (如果我没记错)
u-cha 1 week ago
是,as? 正好在 > 上面。+ 是更高的。
u-cha 1 week ago
不过 js 没有这个问题。
u-cha 1 week ago
js从 ** 到 | 没有一个会产生 nullable
u-cha 1 week ago
最下面的 && 和 || 已经被禁止和 ?? 一起用了。
u-eccha 1 week ago
禁止?
u-cha 1 week ago
a ?? b || c 是语法错误
u-cha 1 week ago
强制你写括号
u-cha 1 week ago
所以我现在提议干脆暂时扩大到所有二元运算符。后续提案研究清楚到底要高优先级还是低优先级再考虑放开。
u-cha 1 week ago
不过如果是跟现在一样的低优先级,估计就永远禁止 a??b||c 了
u-cha 1 week ago
因为两个都是低优先级,谁记得住哪个更低。。。
u-cha 1 week ago
而高优先级还是有可能去掉这个限制的。毕竟一个高一个低,显然可以推断高的比低的优先级高(绕口令)[emoji]
u-hfi 1 week ago
强制要求括号挺好的,可读性有保证
u-hfi 1 week ago
我甚至觉得可以作为永久方案
u-cha 1 week ago
确实,有不少人是宁可强制括号,只不过传统上这事是留给linter的
u-cha 1 week ago
但现在也有几个先例了
u-cha 1 week ago
如-a**b也是语法错误