1 回答

TA貢獻1780條經驗 獲得超4個贊
首先,這是無效的語法:NavigationMixin后面應該跟一個等號才有效。
其次,這段代碼引用了未定義的變量a和i.
讓我們分解一下:
NavigationMixin是一個接受一個參數的函數:e,它應該是一個類/構造函數,它是或繼承自Element. 該函數是一個箭頭函數,它使用箭頭表達式語法,這意味著沒有塊,也沒有返回語句。后面的表達式=>求值為返回值。
表達式由逗號運算符組成。該運算符的左操作數是:
(function(e) {
if ("function" != typeof e.prototype.dispatchEvent) throw new TypeError(`${e} must be an Element type`)
}(e)
這就是所謂的“立即調用的函數表達式”(IIFE)。匿名函數以 as 參數執行e,它顯然用于對e. 該函數不返回任何內容,也沒有用。它的唯一目的是在驗證未通過時觸發錯誤。
然后我們轉到逗號運算符的第二個操作數:
class extends e {
[i](e, t) {
n.getService(this).navigateTo(e, {
replace: t
})
}
[a](e) {
return n.getService(this).generateUrl(e)
}
})
這是一個類表達式。它在原型上定義了兩個成員。這些成員具有計算名稱,這就是它們具有語法的原因[]: 的值i確定第一個成員的名稱,其值是一個函數:
(e, t) {
n.getService(this).navigateTo(e, {
replace: t
})
}
原型上的第二個成員也有一個動態名稱,由 的值決定a,它也是一個函數。
最后,逗號運算符計算兩個操作數,忽略第一個的值,返回第二個的值。因此,整個函數——在執行時——返回一個類,該類使用兩個方法擴展給定的類,這兩個方法的名稱由兩個變量a和動態確定i。
該代碼沒有提供有關這兩個變量的線索。
添加回答
舉報