Wie kann man in JavaScript zwischen Spread-Operator und Rest-Operator unterscheiden?
P粉022501495
2023-09-04 11:25:07
<p>Die Syntax ist dieselbe. Wie unterscheidet JavaScript also unter der Haube zwischen den beiden? </p>
<p>Wird die Beurteilung anhand des Datentyps der Variablen beurteilt, mit der gearbeitet wird? Oder hängt es davon ab, wo die Variable verwendet wird? Oder weder? </p>
JavaScript解析器通过分析出现三个点的语法上下文来确定。
它会考虑这3个点是否与数组字面量、函数调用或函数参数一起使用。
对于扩展运算符:当在数组字面量和函数调用中使用3个点时,它被视为扩展运算符。
对于剩余参数运算符:当在函数定义的参数中使用3个点时,它被视为剩余参数运算符。
...
不是一个运算符。它是主要的语法,就像在for
语句中的()
一样(它们是for
语法的一部分,而不是分组运算符的实例)。运算符不能像展开和剩余语法那样工作。解析器知道你在使用哪个,是因为你在使用它的位置,因为每个位置只有一个有效,另一个位置无效。例如:
...很明显你在两种情况下都在使用剩余语法,因为它被用在解构模式(1 和 2)和参数列表(3)中。
而对于:
...很明显是展开,而不是剩余,因为你在数组字面量(1)、对象字面量(2)和函数调用的参数列表(3)中使用它。