摘要:比如引入全部引入部分引入全部并作為對象導(dǎo)出默認(rèn)部分導(dǎo)出,需引入析構(gòu)賦值析構(gòu)賦值讓我們從或里取部分?jǐn)?shù)據(jù)存為變量。對象數(shù)組我們也可以析構(gòu)傳入的函數(shù)參數(shù)。析構(gòu)時還可以配,讓代碼更具有語義。對象字面量改進這是析構(gòu)的反向操作,用于重新組織一個。
變量聲明
const 和 let
不要用 var,而是用 const 和 let,分別表示常量和變量。不同于 var 的函數(shù)作用域,const 和 let 都是塊級作用域。
const DELAY = 1000; let count = 0; count = count + 1;模板字符串
模板字符串提供了另一種做字符串組合的方法。
const user = "world"; console.log(`hello ${user}`); // hello world // 多行 const content = ` Hello ${firstName}, Thanks for ordering ${qty} tickets to ${event}. `;默認(rèn)參數(shù)
function logActivity(activity = "skiing") { console.log(activity); } logActivity(); // skiing箭頭函數(shù)
函數(shù)的快捷寫法,不需要通過 function 關(guān)鍵字創(chuàng)建函數(shù),并且還可以省略 return 關(guān)鍵字。
同時,箭頭函數(shù)還會繼承當(dāng)前上下文的 this 關(guān)鍵字。
比如:
[1, 2, 3].map(x => x + 1); // [2, 3, 4] 等同于: [1, 2, 3].map((function(x) { return x + 1; }).bind(this));模塊的 Import 和 Export
import 用于引入模塊,export 用于導(dǎo)出模塊。
比如:
// 引入全部 import dva from "dva"; // 引入部分 import { connect } from "dva"; import { Link, Route } from "dva/router"; // 引入全部并作為 github 對象 import * as github from "./services/github"; // 導(dǎo)出默認(rèn) export default App; // 部分導(dǎo)出,需 import { App } from "./file"; 引入 export class App extend Component {};析構(gòu)賦值
析構(gòu)賦值讓我們從 Object 或 Array 里取部分?jǐn)?shù)據(jù)存為變量。
// 對象 const user = { name: "guanguan", age: 2 }; const { name, age } = user; console.log(`${name} : ${age}`); // guanguan : 2 // 數(shù)組 const arr = [1, 2]; const [foo, bar] = arr; console.log(foo); // 1
我們也可以析構(gòu)傳入的函數(shù)參數(shù)。
const add = (state, { payload }) => { return state.concat(payload); }; 析構(gòu)時還可以配 alias,讓代碼更具有語義。 const add = (state, { payload: todo }) => { return state.concat(todo); };對象字面量改進
這是析構(gòu)的反向操作,用于重新組織一個 Object 。
const name = "duoduo"; const age = 8; const user = { name, age }; // { name: "duoduo", age: 8 }
定義對象方法時,還可以省去 function 關(guān)鍵字。
app.model({ reducers: { add() {} // 等同于 add: function() {} }, effects: { *addRemote() {} // 等同于 addRemote: function*() {} }, });Spread Operator
Spread Operator 即 3 個點 ...,有幾種不同的使用方法。
可用于組裝數(shù)組。
const todos = ["Learn dva"]; [...todos, "Learn antd"]; // ["Learn dva", "Learn antd"] 也可用于獲取數(shù)組的部分項。 const arr = ["a", "b", "c"]; const [first, ...rest] = arr; rest; // ["b", "c"] // With ignore const [first, , ...rest] = arr; rest; // ["c"]
還可收集函數(shù)參數(shù)為數(shù)組。
function directions(first, ...rest) { console.log(rest); } directions("a", "b", "c"); // ["b", "c"]; 代替 apply。 function foo(x, y, z) {} const args = [1,2,3]; // 下面兩句效果相同 foo.apply(null, args); foo(...args);
對于 Object 而言,用于組合成新的 Object 。(ES2017 stage-2 proposal)
const foo = { a: 1, b: 2, }; const bar = { b: 3, c: 2, }; const d = 4; const ret = { ...foo, ...bar, d }; // { a:1, b:3, c:2, d:4 }
此外,在 JSX 中 Spread Operator 還可用于擴展 props,詳見 Spread Attributes。
PromisesPromise 用于更優(yōu)雅地處理異步請求。比如發(fā)起異步請求:
fetch("/api/todos") .then(res => res.json()) .then(data => ({ data })) .catch(err => ({ err }));
定義 Promise 。
const delay = (timeout) => { return new Promise(resolve => { setTimeout(resolve, timeout); }); }; delay(1000).then(_ => { console.log("executed"); });
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84558.html
今天想為大家講講前端項目的package.json文件中相關(guān)的字段含義及使用場景。我們先避免一些配置性的錯誤,提高項目的維護性?! ame 我們要知道當(dāng)項目是需要發(fā)版為npm包的,那么name字段是必須的。因為它涉及到npm包的命名。 舉個例子 筆者曾發(fā)布過開源的npm包,名字是ping-url?! ?yīng)的源代碼package.json的定義如下: { "name&qu...
摘要:返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。然后,的應(yīng)當(dāng)會放到當(dāng)前的最后,但是還是在當(dāng)前中。函數(shù)內(nèi)部拋出錯誤,會導(dǎo)致返回的對象變?yōu)闋顟B(tài)。也就是說,只有函數(shù)內(nèi)部的異步操作執(zhí)行完,才會執(zhí)行方法指定的回調(diào)函數(shù)。 showImg(https://segmentfault.com/img/remote/1460000016460782); 前言 最新的 ECMAScript 都已經(jīng)到發(fā)布到 ...
摘要:工程實踐立足實踐,提示實際水平內(nèi)聯(lián)函數(shù)與性能很多關(guān)于性能優(yōu)化的文章都會談及內(nèi)聯(lián)函數(shù),其也是常見的被詬病為拖慢性能表現(xiàn)的元兇之一不過本文卻是打破砂鍋問到底,論證了內(nèi)聯(lián)函數(shù)并不一定就會拖慢性能,過度的性能優(yōu)化反而會有損于應(yīng)用性能。 showImg(https://segmentfault.com/img/remote/1460000011481413?w=1240&h=825); 前端每周...
摘要:本人計劃編寫一個針對中初級前端開發(fā)者學(xué)習(xí)的系列教程玩轉(zhuǎn)。使用的原因是新的語言規(guī)范開發(fā)效率更高代碼更優(yōu)雅,尤其是基于開發(fā)的項目。其次也是目前特別流行的一個前端框架,截止目前,上有將近萬,國內(nèi)一二線互聯(lián)網(wǎng)公司都有深度依賴開發(fā)的項目。 本人計劃編寫一個針對中初級前端開發(fā)者學(xué)習(xí) React 的系列教程 - 《玩轉(zhuǎn) React》。 文章更新頻率:每周 1 ~ 2 篇。 目錄 玩轉(zhuǎn) React(...
摘要:終于,我在看到美團的社招信息后,勇敢地邁出了第一步。當(dāng)時參加的是美團點評部門的面試,部門前端技術(shù)棧是,后端用的。后來才知道美團是一次性全部面完的。所以以后有去參加美團面試的童鞋,最好做好面試四個小時的打算。 showImg(https://segmentfault.com/img/bV0c3T?w=672&h=361); 前言 我叫王小閏(花名),非科班出身,野生前端從業(yè)者,在小公司打...
閱讀 2993·2021-10-12 10:17
閱讀 1596·2021-09-01 11:38
閱讀 1087·2019-08-30 15:44
閱讀 3485·2019-08-26 18:36
閱讀 515·2019-08-26 13:25
閱讀 1890·2019-08-26 10:29
閱讀 2841·2019-08-23 15:58
閱讀 765·2019-08-23 12:59