2017-04-04 66 views
0

我在學習react-native。我碰到這種語法ES6的ES6語法對象短符號和計算屬性

第一個語法

this.state = { 
    refreshing: false, 
}; 

第二個語法

this.state = {[refreshing]: false}; 

將對其執行相同的任務來的?如果這些行代碼相同的任務又是什麼對象短符號和計算屬性之間的區別

+0

它會執行嗎? – zeroflagL

+0

@zeroflagL是什麼? –

+0

第二個陳述是否運行?這不是有效的JavaScript。 – zeroflagL

回答

0

號他們是完全不同的:

const state = { 
    refreshing: false, 
}; 
console.log(state); // { refreshing: false } 

在你的第二個例子:

const state = {[refreshing]: false}; 
// Error: refreshing is not defined 

這是因爲計算屬性在可訪問範圍內查找名爲refreshing的變量。例如:

const refreshing = "example"; 
const state = { [refreshing]: false }; 
console.log(state); // { example: false } 

所以等同於計算的屬性語法你的第一個例子是:

const key = "refreshing"; 
const state = {[key]: false}; 
console.log(state); // { refreshing: false } 

但你只會用這個,如果你不知道key提前。

+0

刷新是const變量在我的情況也是那麼兩個都是一樣的?你是什​​麼意思?「但是如果你提前不知道密鑰,你只能用這個。」 –