我進入了Firefox和Chrome瀏覽器開發控制檯這個表達式,我不知道爲什麼它是有效的JavaScript:對象聲明中的屬性名稱後面沒有冒號,它有效嗎?
var x = { a (b) {} };
console.log(x);
x
然後設置爲與財產被稱爲「一」與「一」包含一個函數的對象參數標識符「b」。 這個有效的JavaScript語法如何? 「a」之後冒號缺少,我不理解函數定義。
我進入了Firefox和Chrome瀏覽器開發控制檯這個表達式,我不知道爲什麼它是有效的JavaScript:對象聲明中的屬性名稱後面沒有冒號,它有效嗎?
var x = { a (b) {} };
console.log(x);
x
然後設置爲與財產被稱爲「一」與「一」包含一個函數的對象參數標識符「b」。 這個有效的JavaScript語法如何? 「a」之後冒號缺少,我不理解函數定義。
這是ES6/ES2015語法糖(Property shorthand)。 隨着ES6:
const obj = {
a(b) {
// Shorthand method
// `this` context is `obj`
},
c
};
等於
var obj = {
a: function a(b) {
},
c: c
};
在JavaScript中,當你寫:
var x = { a (b) {} };
它會認爲它是:
var x = {
a: function (b) {
}
}
例如,你可以檢查這個它會清除您的疑問:
var x = { a (b) { console.info('function called') } };
x.a();
這將調用分配給對象x
財產a
功能。
ES6簡短對象符號 – vlaz
'x'是一個名爲'a'的函數,它的參數名爲'b' –