【发布时间】:2017-12-07 14:01:40
【问题描述】:
为什么展开语法会将我的字符串转换为数组?
var v = 'hello';
var [, ...w] = v; // ["e", "l", "l", "o"]
为什么w 不是字符串?
【问题讨论】:
-
我猜这和JS中的字符串类似数组有关吧?
-
在这种情况下,“标点符号”一词仅指
...不是标识符或文字这一事实,它还描述了同一类别中的其他标记,例如=和;因此,当您不编写 JavaScript 解析器时,它并不是一个特别具有描述性或有用的术语。所以“标点符号”是一个没有语义意义的低级术语。正如我们在x + y中不将+称为标点符号一样,我们将其称为运算符,我们不会在... x中将...称为标点符号,我们将其称为扩展语法。该标准仅命名需要在其他地方引用的内容。 -
你能解释一下为什么你期望
w是一个字符串吗? -
按照逻辑,第一个迭代器对象
Object {value: 1, done: false}应该被丢弃,w必须引用在第一个yield表达式之后暂停的生成器函数。 -
@ftor 我猜他们可以使用剩余的迭代器初始化其余变量,但是如果您想多次使用它,则必须将其显式转换为集合数据结构.可迭代协议不包含任何
Type.fromIterable逻辑。它被转换为数组是因为它使用数组语法,而且索引集合确实是最小公分母。