TC39中文讨论群

Ecma International, Technical Committee 39 - ECMAScript

u-abahjbfebbc 2 months ago
有个问题,如果使用了function.sent,但是没有实现backward怎么办?这样的话会使得for of 和for reverse of的行为是一模一样的
u-efdedhj 2 months ago
@Hax 如果原来的实现里就有输出了 "\//JS:undefined" 咋办呢
u-cha 2 months ago
@nonamesheep 用了function.sent的人其实就会期待传入参数,那么他可以看到不认识的参数(比如backward)就throw error。他也可以不管,那他写的这个generator就不符合 backward 的协议,而是用于他自己的特殊用途,那他就不管你怎么用了。
u-cha 2 months ago
所以如果你显式的想标记自己不实现backward就看到backward就扔异常。
u-cha 2 months ago
@JUSTICE 这里的假设即使原本的json输出不存在 \// ,虽然理论上可以。但没见过这样的输出,除非你故意手写成这样。
u-cha 2 months ago
即使/即是
u-cha 2 months ago
正常工具要么是 // 要么是全escape的 \/\/ (比如 php 那二货),没有理由一会儿 escape 一会儿不 escape。
u-cha 2 months ago
@nonamesheep 当然,有个问题是可能扔异常的时候已经跑了好几个值了,道理上最好能直接标记自己是否支持协议。不过generator本来就没这个功能,你没法标明我这个generator其实是不支持iterator协议的。generator被“强迫”实现iterator,而iterator不会传任何参数。所以function.sent的功能就鸡肋了。因为你如果接受参数,你大体上就不会是正常的iterator,你最多就直接return掉(解构得到空数组)。
u-cha 2 months ago
比较正常的写法就是没有参数就直接扔异常。但是在没有function.sent的情况下你最快得到第二次next才能扔异常。因为第一个next进来的东西你也看不到。。。所以现在的情况就是没法在启动之前就报告我其实不支持一般的for...of。所以我这个提案至少也不会比现在更糟。
u-cha 2 months ago
一定要更早的机制,可以考虑将来的 function decorator,通过某种decorator来给generator生成的对象上加点标记。
u-cha 2 months ago
哦,对了,我其实写的是,如果存在有反向,总是会有参数的,比如 forward。这样其实是在第一次就可以扔异常了。不带有参数的,说明是普通不带反向的。
u-cha 2 months ago
开会时间。。。
u-cha 2 months ago
4点到11点。
u-ehjh 2 months ago
早上起来 智商下降 电脑密码都输不对了
u-cha 2 months ago
你的话题要讲了吗?
u-cha 2 months ago
@Jack 你的名字显示在屏幕上。。。
u-cha 2 months ago
吃了东西我感觉要睡着了
u-ehjh 2 months ago
"Hax: 你的话题要讲了吗?" - - - - - - - - - - - - - - - 被合并到那个规范 caller 的提案了
u-cha 2 months ago
太困了,休息一下
u-cha 2 weeks ago
SharedArrayBuffer 好像要被改成 可选 的了。
u-cha 2 weeks ago
Logical Assignment Operator 打算在本月底的会议进入 Stage 3
u-cha 2 weeks ago
就是 a ||= b; a &&= b; a ??= b;
u-cha 2 weeks ago
相当于 a || (a = b) 。
u-cha 2 weeks ago
大家如果有意见的话,现在是最后的机会去提出。
u-cha 2 weeks ago
注意这三个运算符和一般的 a += b 的区别是,它们是有短路语义的。
u-cha 2 weeks ago
即 a ??= b 并不是 a = a ?? b,而是 a ?? (a = b) 。
u-cha 2 weeks ago
这个差异发生在 x.prop ??= value 时,即 x.prop 如果是 setter 是否会一定触发。