国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

如何區(qū)分JavaScript中的展開運算子和剩餘運算子?
P粉022501495
P粉022501495 2023-09-04 11:25:07
0
2
660
<p>語法是相同的,那麼JavaScript在底層如何區(qū)分這兩者呢? </p> <p>它是根據(jù)被操作的變數(shù)的資料型態(tài)來判斷嗎?還是根據(jù)變數(shù)的使用位置來判斷?或者兩者都不是? </p>
P粉022501495
P粉022501495

全部回覆(2)
P粉545910687

JavaScript解析器透過分析出現(xiàn)三個點的語法上下文來決定。

它會考慮這3個點是否與陣列字面量、函數(shù)呼叫或函數(shù)參數(shù)一起使用。

對於擴充運算子:當在陣列字面量和函數(shù)呼叫中使用3個點時,它被視為擴充運算子。

對於剩餘參數(shù)運算子:當在函數(shù)定義的參數(shù)中使用3個點時,它被視為剩餘參數(shù)運算子。

P粉549412038

... 不是一個運算子。它是主要的語法,就像在for 語句中的() 一樣(它們是for 語法的一部分,而不是分組運算子的實例) 。運算符不能像展開和剩餘語法那樣工作。

解析器知道你在使用哪一個,是因為你在使用它的位置,因為每個位置只有一個有效,另一個位置無效。例如:

// 1
const [first, ...rest] = someArray;
// 2
const { a, ...others } = someObject;
// 3
function example(p1, ...others) {
    // ...
}

...很明顯你在兩種情況下都在使用剩餘語法,因為它被用在解構(gòu)模式(1 和 2)和參數(shù)清單(3)。

而對於:

// 1
const x = [...someIterable];
// 2
const o = { ...someObject };
// 3
example(...someIterable);

...很明顯是展開,而不是剩餘,因為你在數(shù)組字面量(1)、物件字面量(2)和函數(shù)呼叫的參數(shù)列表(3)中使用它。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板