Section 22.2.3.22.2 of the ECMAScript spec中的第24项提到,当源缓冲区和目标缓冲区具有相同的值时,即在代码中调用a.set(a, 0);
时,其中a
是TypedArray,则实现应克隆源缓冲区(它提到了潜在的副作用)。
我的问题是为什么必须进行这种克隆?如果没有的话,能产生明显副作用的代码示例是什么?
答案 0 :(得分:0)
有问题的规范文本是这样的:
b。将srcBuffer设置为? CloneArrayBuffer(srcBuffer,srcByteOffset,srcByteLength,%ArrayBuffer%)。
注意:%ArrayBuffer%用于克隆srcBuffer,因为已知它没有任何可观察到的副作用。
此注释的意思是使用%ArrayBuffer%
构造函数(而不是this.constructor
或this.constructor[@@species]
,因为通常会调用%ArrayBuffer%
不会有任何副作用。