本身调用%TypedArray%.prototype.set时会产生副作用吗?

时间:2018-06-21 14:11:05

标签: javascript ecmascript-6 language-lawyer

Section 22.2.3.22.2 of the ECMAScript spec中的第24项提到,当源缓冲区和目标缓冲区具有相同的值时,即在代码中调用a.set(a, 0);时,其中a是TypedArray,则实现应克隆源缓冲区(它提到了潜在的副作用)。

我的问题是为什么必须进行这种克隆?如果没有的话,能产生明显副作用的代码示例是什么?

1 个答案:

答案 0 :(得分:0)

有问题的规范文本是这样的:

b。将srcBuffer设置为? CloneArrayBuffer(srcBuffer,srcByteOffset,srcByteLength,%ArrayBuffer%)。
注意:%ArrayBuffer%用于克隆srcBuffer,因为已知它没有任何可观察到的副作用。

此注释的意思是使用%ArrayBuffer%构造函数(而不是this.constructorthis.constructor[@@species],因为通常会调用%ArrayBuffer%不会有任何副作用。