嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

你可能不需要在 JavaScript 使用 switch 語句!

2020-7-23    seo達人

沒有 switch 就沒有復雜的代碼塊

switch很方便:給定一個表達式,我們可以檢查它是否與一堆case子句中的其他表達式匹配。 考慮以下示例:


const name = "Juliana";


switch (name) {

 case "Juliana":

   console.log("She's Juliana");

   break;

 case "Tom":

   console.log("She's not Juliana");

   break;

}

當 name 為“Juliana”時,我們將打印一條消息,并立即中斷退出該塊。 在switch函數內部時,直接在 case 塊使用 return,就可以省略break。


當沒有匹配項時,可以使用 default 選項:


const name = "Kris";


switch (name) {

 case "Juliana":

   console.log("She's Juliana");

   break;

 case "Tom":

   console.log("She's not Juliana");

   break;

 default:

   console.log("Sorry, no match");

}

switch在 Redux reducers 中也大量使用(盡管Redux Toolkit簡化了樣板),以避免產生大量的if。 考慮以下示例:


const LOGIN_SUCCESS = "LOGIN_SUCCESS";

const LOGIN_FAILED = "LOGIN_FAILED";


const authState = {

 token: "",

 error: "",

};


function authReducer(state = authState, action) {

 switch (action.type) {

   case LOGIN_SUCCESS:

     return { ...state, token: action.payload };

   case LOGIN_FAILED:

     return { ...state, error: action.payload };

   default:

     return state;

 }

}

這有什么問題嗎?幾乎沒有。但是有沒有更好的選擇呢?


從 Python 獲得的啟示

來自 Telmo 的這條 Tweet引起了我的注意。 他展示了兩種“switch”風格,其中一種非常接近Python中的模式。


Python 沒有開關,它給我們一個更好的替代方法。 首先讓我們將代碼從 JavaScript 移植到Python:


LOGIN_SUCCESS = "LOGIN_SUCCESS"

LOGIN_FAILED = "LOGIN_FAILED"


auth_state = {"token": "", "error": ""}



def auth_reducer(state=auth_state, action={}):

   mapping = {

       LOGIN_SUCCESS: {**state, "token": action["payload"]},

       LOGIN_FAILED: {**state, "error": action["payload"]},

   }


   return mapping.get(action["type"], state)

在 Python 中,我們可以使用字典來模擬switch 。 dict.get() 可以用來表示 switch 的 default 語句。


當訪問不存在的key時,Python 會觸發一個 KeyError 錯誤:


>>> my_dict = {

   "name": "John",

   "city": "Rome",

   "age": 44

   }


>>> my_dict["not_here"]


# Output: KeyError: 'not_here'

.get()方法是一種更安全方法,因為它不會引發錯誤,并且可以為不存在的key指定默認值:


>>> my_dict = {

   "name": "John",

   "city": "Rome",

   "age": 44

   }


>>> my_dict.get("not_here", "not found")


# Output: 'not found'

因此,Pytho n中的這一行:


return mapping.get(action["type"], state)

等價于 JavaScript中的:


function authReducer(state = authState, action) {

 ...

   default:

     return state;

 ...

}

使用字典的方式替換 switch

再次思考前面的示例:


const LOGIN_SUCCESS = "LOGIN_SUCCESS";

const LOGIN_FAILED = "LOGIN_FAILED";


const authState = {

 token: "",

 error: "",

};


function authReducer(state = authState, action) {

 switch (action.type) {

   case LOGIN_SUCCESS:

     return { ...state, token: action.payload };

   case LOGIN_FAILED:

     return { ...state, error: action.payload };

   default:

     return state;

 }

}

如果不使用 switch 我們可以這樣做:


function authReducer(state = authState, action) {

 const mapping = {

   [LOGIN_SUCCESS]: { ...state, token: action.payload },

   [LOGIN_FAILED]: { ...state, error: action.payload }

 };


 return mapping[action.type] || state;

}

這里我們使用 ES6 中的計算屬性,此處,mapping的屬性是根據兩個常量即時計算的:LOGIN_SUCCESS 和 LOGIN_FAILED。

屬性對應的值,我們這里使用的是對象解構,這里 ES9((ECMAScript 2018)) 出來的。


const mapping = {

 [LOGIN_SUCCESS]: { ...state, token: action.payload },

 [LOGIN_FAILED]: { ...state, error: action.payload }

}

你如何看待這種方法?它對 switch 來說可能還能一些限制,但對于 reducer 來說可能是一種更好的方案。


但是,此代碼的性能如何?


性能怎么樣?

switch 的性能優于字典的寫法。我們可以使用下面的事例測試一下:


console.time("sample");

for (let i = 0; i < 2000000; i++) {

 const nextState = authReducer(authState, {

   type: LOGIN_SUCCESS,

   payload: "some_token"

 });

}

console.timeEnd("sample");

測量它們十次左右,


for t in {1..10}; do node switch.js >> switch.txt;done

for t in {1..10}; do node map.js >> map.txt;done

clipboard.png


人才們的 【三連】 就是小智不斷分享的最大動力,如果本篇博客有任何錯誤和建議,歡迎人才們留言,最后,謝謝大家的觀看。


原文:https://codeburst.io/alternat...


代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進行log 調試,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug。

藍藍設計www.sdgs6788.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務



日歷

鏈接

個人資料

藍藍設計的小編 http://www.sdgs6788.com

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 日韩午夜电影av| 日韩视频一区二区在线观看| 校园春色综合网| 国产精品视频免费观看| 亚洲国产影院| 制服丝袜激情欧洲亚洲| 国产亚洲一区在线播放| 精品二区久久| 一区二区三区自拍| 国产欧美一区二区三区在线看蜜臀| 亚洲人成毛片在线播放| 久久理论片午夜琪琪电影网| 久久精品二区三区| 欧美激情bt| 亚洲精品欧美日韩| 亚洲一区三区电影在线观看| 亚洲欧洲99久久| 久久露脸国产精品| 欧美xart系列在线观看| 欧美午夜久久| 亚洲电影在线| 免费观看日韩| 亚洲免费中文字幕| 在线日韩精品视频| 国产农村妇女毛片精品久久莱园子| 久久精品视频在线看| 久久婷婷亚洲| 欧美午夜不卡视频| 国模大胆一区二区三区| 最新亚洲激情| 欧美中文字幕视频在线观看| 国内一区二区在线视频观看| 亚洲另类黄色| 精久久久久久| 国产精品成人国产乱一区| 欧美精品自拍| 国产一区av在线| 一区二区三区|亚洲午夜| 欧美一区二区在线视频| 亚洲第一中文字幕| 亚洲免费在线观看| 欧美第一黄色网| 精品动漫3d一区二区三区| 亚洲主播在线播放| 欧美大胆人体视频| 午夜精品国产| 欧美日韩综合在线免费观看| 亚洲激情一区| 噜噜噜91成人网| 午夜一区二区三区在线观看| 欧美激情视频一区二区三区免费| 国产一级精品aaaaa看| 亚洲一二三区在线| 亚洲激情小视频| 美女爽到呻吟久久久久| 亚洲一区二区三区高清不卡| 欧美精品黄色| 伊人精品久久久久7777| 久久精品国产综合| 午夜精品久久久久久久99樱桃 | 久久久精彩视频| 一本久道综合久久精品| 欧美日韩 国产精品| 亚洲精品中文字幕在线观看| 亚洲第一级黄色片| 久久婷婷成人综合色| 国产亚洲毛片在线| 欧美中文在线免费| 香蕉成人啪国产精品视频综合网| 欧美日韩伦理在线| 国产精品99久久久久久有的能看| 亚洲高清免费在线| 免费中文日韩| 亚洲国产精品成人综合色在线婷婷 | 欧美一区2区视频在线观看 | 欧美一区二区成人6969| 亚洲一区国产精品| 国产亚洲欧洲一区高清在线观看| 久久国产日韩| 久热re这里精品视频在线6| 亚洲欧洲在线看| 日韩午夜电影av| 国产美女搞久久| 两个人的视频www国产精品| 欧美成人自拍| 亚洲欧美在线一区二区| 新狼窝色av性久久久久久| 一区二区在线看| 亚洲精品久久久久久久久久久久| 国产精品国产亚洲精品看不卡15| 久久成人国产| 欧美男人的天堂| 久久人人97超碰国产公开结果| 模特精品裸拍一区| 欧美在线视频二区| 欧美69视频| 久久国产婷婷国产香蕉| 免费成人黄色片| 久久成人综合网| 欧美日韩高清免费| 久久一区视频| 国产精品久久久久久久久久久久久久| 欧美一区二区三区在线视频 | aa级大片欧美三级| 欧美一区二区性| 国产精品99久久久久久久女警 | 亚洲自拍偷拍麻豆| 伊人色综合久久天天| 亚洲人成欧美中文字幕| 国产精品久久久久一区| 麻豆成人精品| 国产精品日韩精品欧美在线| 欧美成人免费视频| 国产精品高潮呻吟| 亚洲国产经典视频| 一区二区三区在线不卡| 亚洲一区二区三区涩| 日韩午夜高潮| 久久久久在线观看| 欧美在线视频观看免费网站| 欧美视频不卡中文| 欧美激情亚洲自拍| 原创国产精品91| 欧美影院在线| 羞羞答答国产精品www一本 | 免费观看欧美在线视频的网站| 国产精品美女一区二区| 亚洲日本免费| 亚洲精品在线免费观看视频| 久久综合中文| 欧美国产大片| 一区二区激情视频| 日韩系列在线| 欧美激情视频在线播放| 蜜乳av另类精品一区二区| 国产亚洲欧美激情| 亚洲一区二区三区精品动漫| 亚洲视频视频在线| 欧美人与禽猛交乱配| 91久久精品一区二区别| 亚洲人成绝费网站色www| 久久精品国产欧美激情| 久久久久久婷| 在线观看一区视频| 免费亚洲视频| 亚洲精品网址在线观看| 在线一区二区视频| 欧美日韩网址| 亚洲欧美日韩综合| 久久在线免费观看视频| 国产综合久久久久久鬼色| 久久精品国产久精国产一老狼| 免费成人激情视频| 亚洲精品日韩在线观看| 欧美日韩亚洲系列| 亚洲一区国产一区| 麻豆精品精华液| 亚洲精品久久久一区二区三区| 欧美精品麻豆| 亚洲欧美日韩精品久久| 欧美二区在线看| 99精品视频免费在线观看| 欧美日韩一区不卡| 亚洲与欧洲av电影| 欧美gay视频激情| 亚洲午夜免费视频| 国产区在线观看成人精品| 国产精品日韩| 欧美诱惑福利视频| 久久精品视频免费| 在线观看91久久久久久| 欧美精品一区二区三区在线播放| 一区二区三区久久| 久久午夜电影网| 中文在线一区| 在线欧美三区| 国产精品日日摸夜夜摸av| 久久久久久高潮国产精品视| 亚洲日韩欧美视频一区| 久久av一区二区三区| 亚洲黄页一区| 国产麻豆精品theporn| 欧美freesex交免费视频| 亚洲一区二区在线播放| 亚洲国产精品成人一区二区| 久久aⅴ国产欧美74aaa| 一本色道久久综合亚洲二区三区| 国产日韩亚洲欧美精品| 欧美日韩国产综合网 | 在线亚洲国产精品网站| 国产一区久久| 国产精品久99| 欧美日韩第一页| 麻豆国产va免费精品高清在线| 亚洲一区二区三区四区五区午夜| 欧美激情精品久久久| 久久精品人人做人人爽电影蜜月| 一区二区三区日韩精品视频| 91久久精品国产91性色| 伊人激情综合|