最近在看《深入淺出react和redux》。其實react-redux采用的單相流flux是對傳統mvc的一種改進,而Qt的qml遵循的是傳統mvc,已有類似flux的Qt-qml實現,比如:GitHub - benlau/quickflux: A Flux implementation for QML。為了更好理解flux于是看了此書的前三張,而React和qml都能采用JS(ECMAScript 6)作為主力語言,在此列舉一些個人不甚了解的JS語法以供備忘。
花括號與方括號
一句話總結:{ } 是一個對象,[ ] 是一個數組
冒號的作用
1)聲明直接量對象的成員和聲明標簽?
2)switch語句分支?
3)?:三元表達式的false
主要闡述第一點。
1.?類似于C#的屬性用法:
<SCRIPT LANGUAGE="JavaScript">
getValue = {a : "value1",b : "value2"
};
調用,a和b是屬于getValue對象的2個屬性:
alert(getValue.a);
//or
alert(getValue["b"]);
</SCRIPT>
2. 對象的方法,用法和上面差不多:
<SCRIPT LANGUAGE="JavaScript">
getValue =
{getFirst:function(){alert("value1");}
};
調用:
getValue.getFirst();
</SCRIPT>
逗號以及擴展運算符
return { ...state, [counterCaption]: state[counterCaption] + 1};
三個句點是擴展運算符,?意為在函數調用/數組構造時,將數組表達式或者string在語法層面展開;還可以在構造字面量對象時將對象表達式按照key-value的方式展開。于是上述代碼就是將state所有key-value展開;
而逗號運算符是首先計算左操作數,然后計算右操作數,最后返回右操作數的值。用逗號運算符可以在一條語句中執行多個運算;
因此上述代碼等同于:
const newState = Object.assign({}, state);
newState[counterCaption]++;
return newState;
?默認導出
默認導出主要用于導出一個模塊中最核心的內容。每個文件只能有一個默認導出。在使用默認導出時,導入者可以指定任何名稱引用它:
// example.js
export default function 方法名() { /* 代碼 */ }// main.js
import abc from './example.js';
abc();
?