JavaScript中Symbol.isConcatSpread的重要性是什么?
Symbol.isConcatSpread
此众所周知的符号用于配置在使用Array.prototype.concat()方法时是否应将对象展平为其数组元素。如果为假 ,则不对数组进行展平。默认情况下,Symbol.IsConcatSpread 为true。因此,除非且没有明确声明,否则不能避免数组的变平 。
无符号
示例
在以下示例中,未明确说明符号Symbol.IsConcatSpread。因此,默认情况下,数组将按照输出中所示的方式展平。
<html> <body> <script> var arr1 = ['mango', 'apple', 'guava']; var arr2 = ['cashew', 'pista', 'bhadham']; var res1 = arr1.concat(arr2); console.log(res1); </script> </body> </html>
输出结果
["mango", "apple", "guava", "cashew", "pista", "bhadham"]
带符号
示例
在下面的示例中,显式声明了Symbol.IsConcatSpread符号,因此未如输出所示对数组进行展平。
<html> <body> <script> var arr1 = ['mango', 'apple', 'guava']; var arr2 = ['cashew', 'pista', 'bhadham']; arr2[Symbol.isConcatSpreadable] = false; var res2 = arr1.concat(arr2); console.log(res2); </script> </body> </html>
输出结果
["mango", "apple", "guava", Array(3)]