diff --git a/docs/arraybuffer.md b/docs/arraybuffer.md index bc0cfda..098031c 100644 --- a/docs/arraybuffer.md +++ b/docs/arraybuffer.md @@ -454,7 +454,17 @@ Float64Array.BYTES_PER_ELEMENT // 8 function ab2str(buf) { // 注意,如果是大型二进制数组,为了避免溢出, // 必须一个一个字符地转 - return String.fromCharCode.apply(null, new Uint16Array(buf)); + if (buf && buf.byteLength < 1024) { + return String.fromCharCode.apply(null, new Uint16Array(buf)); + } + + const bufView = new Uint16Array(buf); + const len = bufView.length; + const bstr = new Array(len); + for (let i = 0; i < len; i++) { + bstr[i] = String.fromCharCode.call(null, bufView[i]); + } + return bstr.join(''); } // 字符串转为 ArrayBuffer 对象,参数为字符串 diff --git a/docs/proposals.md b/docs/proposals.md index 3d65d88..8861069 100644 --- a/docs/proposals.md +++ b/docs/proposals.md @@ -321,7 +321,7 @@ g(1, 2, 3); // [1, 2, 3, 9, 1, 2, 3] Unix 操作系统有一个管道机制(pipeline),可以把前一个操作的值传给后一个操作。这个机制非常有用,使得简单的操作可以组合成为复杂的操作。许多语言都有管道的实现,现在有一个[提案](https://github.com/tc39/proposal-partial-application),让 JavaScript 也拥有管道机制。 -JavaScript 的管道是一个运算符,写作`|>`。它的左边是一个表达式,右边是一个函数。管道运算符把左边表达式的值,传入右边的函数进行求职。 +JavaScript 的管道是一个运算符,写作`|>`。它的左边是一个表达式,右边是一个函数。管道运算符把左边表达式的值,传入右边的函数进行求值。 ```javascript x |> f diff --git a/docs/set-map.md b/docs/set-map.md index c3087ea..27f109e 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -55,7 +55,7 @@ set.size // 56 [...new Set(array)] ``` -向 Set 加入值的时候,不会发生类型转换,所以`5`和`"5"`是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value equality”,它类似于精确相等运算符(`===`),主要的区别是`NaN`等于自身,而精确相等运算符认为`NaN`不等于自身。 +向 Set 加入值的时候,不会发生类型转换,所以`5`和`"5"`是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(`===`),主要的区别是`NaN`等于自身,而精确相等运算符认为`NaN`不等于自身。 ```javascript let set = new Set();