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