{"id":6510,"date":"2020-01-25T23:05:00","date_gmt":"2020-01-25T22:05:00","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=6510"},"modified":"2020-01-25T23:05:00","modified_gmt":"2020-01-25T22:05:00","slug":"clean-up-your-code-by-removing-if-else-statements","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2020\/01\/25\/clean-up-your-code-by-removing-if-else-statements\/","title":{"rendered":"Clean up your code by removing \u2018if-else\u2019 statements"},"content":{"rendered":"<p><a href=\"https:\/\/medium.com\/javascript-in-plain-english\/clean-up-your-code-by-removing-if-else-statements-31102fe3b083\"><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/miro.medium.com\/max\/6869\/0*jVfPx3gGE675dADr\" alt=\"\" \/><\/a> <em><a href=\"https:\/\/medium.com\/javascript-in-plain-english\/clean-up-your-code-by-removing-if-else-statements-31102fe3b083\">Clean up your code by removing \u2018if-else\u2019 statements<\/a><\/em><\/p>\n<p>Nifty techniques, I fear they will be soon be abused by too many people&#8230;.<\/p>\n<p><!--more--><!--nextpage--><\/p>\n<blockquote>\n<div>\n<div id=\"b052\" class=\"fb fc cn ar fd b fe ff fg fh fi fj fk fl fm fn fo\">\n<h1 class=\"fd b fe fp fg fq fi fr fk fs fm ft cn\">Clean up your code by removing \u2018if-else\u2019 statements<\/h1>\n<\/div>\n<\/div>\n<div id=\"8983\" class=\"fu fc av ar aq ec fv fw fx fy fz ga gb gc gd ge gf\">\n<h2 class=\"aq ec fv gg fx gh fz gi gb gj gd gk av\">Some tips to make your JavaScript code more elegant.<\/h2>\n<\/div>\n<div class=\"gl\">\n<div class=\"n gm gn go gp\">\n<div class=\"o n\">\n<div>\n<p id=\"5626\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">When we write JS code, we often encounter the situation of complex logic judgment. Generally, you can use <em class=\"jr\">if\/else<\/em> or <em class=\"jr\">switch<\/em> to implement multiple conditional judgment, but there will be a problem: With the increase of logic complexity, <em class=\"jr\">if\/else<\/em> and <em class=\"jr\">switch<\/em> in the code will become more and more bloated. This article will take you to try to write more elegant judgment logic.<\/p>\n<p id=\"b1c7\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">For example, let\u2019s look at a piece of code:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"ql r\">\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/**<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * Button click event<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * @param {number} status <\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * Activity status: 1 in progress, 2 in failure, 3 out of stock, 4 in success, 5 system cancelled<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> *\/<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-en\">onButtonClick<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">1<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC8\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;processing&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC9\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;IndexPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC10\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">2<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC12\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC13\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">3<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC14\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC15\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC16\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">4<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC17\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;success&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC18\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;SuccessPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC19\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">5<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC20\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;cancel&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC21\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;CancelPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC22\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC23\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;other&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC24\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;Index&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-onclick-js-LC25\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"pl-kos\">}<\/span><\/div>\n<\/div>\n<\/figure>\n<p id=\"3f5a\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">You can see the click logic of this button in the code: Do two things according to the different activity state, send the log buried point and jump to the corresponding page, you can easily come up with a rewrite of this code by switch appearance.<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qf r\">\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-en\">onButtonClick<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">switch<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">case<\/span> <span class=\"pl-c1\">1<\/span>:<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;processing&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;IndexPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">break<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">case<\/span> <span class=\"pl-c1\">2<\/span>:<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC8\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">case<\/span> <span class=\"pl-c1\">3<\/span>:<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC9\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC10\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">break<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC12\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">case<\/span> <span class=\"pl-c1\">4<\/span>:<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC13\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;success&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC14\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;SuccessPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC15\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">break<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC16\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">case<\/span> <span class=\"pl-c1\">5<\/span>:<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC17\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;cancel&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC18\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;CancelPage&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC19\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">break<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC20\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">default<\/span>:<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC21\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;other&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC22\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;Index&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC23\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">break<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-switch-js-LC24\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"pl-kos\">}<\/span><\/div>\n<\/div>\n<\/figure>\n<p id=\"0bfa\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">Well, it looks much clearer than <em class=\"jr\">if\/else<\/em>, careful readers may have also found a small trick: case 2 and case 3&#8217;s logic is the same, we can save the execution statement and break, case 2 will automatically execute with case 3&#8217;s logic.<\/p>\n<p id=\"310d\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">But there\u2019s a simpler way to write it.<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qc r\">\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-s1\">actions<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s\">&#8216;1&#8217;<\/span>: <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;processing&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;IndexPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s\">&#8216;2&#8217;<\/span>: <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s\">&#8216;3&#8217;<\/span>: <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s\">&#8216;4&#8217;<\/span>: <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;success&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;SuccessPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s\">&#8216;5&#8217;<\/span>: <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;cancel&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;CancelPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s\">&#8216;default&#8217;<\/span>: <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;other&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;Index&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC8\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC9\" class=\"blob-code blob-code-inner js-file-line\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC10\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-en\">onButtonClick<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">let<\/span> <span class=\"pl-s1\">action<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">actions<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">]<\/span> <span class=\"pl-c1\">||<\/span> <span class=\"pl-s1\">actions<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;default&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC12\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s1\">logName<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">action<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">0<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC13\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s1\">pageName<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">action<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">1<\/span><span class=\"pl-kos\">]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC14\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">logName<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-actions-js-LC15\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">pageName<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"pl-kos\">}<\/span><\/div>\n<\/div>\n<\/figure>\n<p id=\"4f3b\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">The code above does look cleaner, and the clever thing about this approach is that it uses the judgment condition as the object\u2019s property name, and the processing logic as the object\u2019s property value. When the button is clicked, this method is especially suitable for the case of unary condition judgment, which makes logical judgment by means of object attribute lookup.<\/p>\n<p id=\"9240\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">It\u2019s fine, but is there another way to code?<\/p>\n<p id=\"bd6a\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">Yes!<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qd r\">\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-s1\">actions<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Map<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">[<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">1<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;processing&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;IndexPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">2<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">3<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;fail&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;FailPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">4<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;success&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;SuccessPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">5<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;cancel&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;CancelPage&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;default&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;other&#8217;<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s\">&#8216;Index&#8217;<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC8\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC9\" class=\"blob-code blob-code-inner js-file-line\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC10\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-en\">onButtonClick<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">let<\/span> <span class=\"pl-s1\">action<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">actions<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">get<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c1\">||<\/span> <span class=\"pl-s1\">actions<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">get<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;default&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC12\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">sendLog<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">action<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">0<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-map-js-LC13\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-en\">jumpTo<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">action<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-c1\">1<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"pl-kos\">}<\/span><\/div>\n<\/div>\n<\/figure>\n<p id=\"866f\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">There are many advantages to using Map instead of Object, which we will talk about later.<\/p>\n<p id=\"86c8\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">What\u2019s the difference between a Map object and a normal object?<\/p>\n<ul class=\"\">\n<li id=\"00ba\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq jt ju jv\" data-selectable-paragraph=\"\">An object usually has its own prototype, so an object always has a \u201cprototype\u201d key<\/li>\n<li id=\"0eb2\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq jt ju jv\" data-selectable-paragraph=\"\">An object\u2019s key can only be a string or Symbols, but a Map\u2019s key can be any value<\/li>\n<li id=\"e7e4\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq jt ju jv\" data-selectable-paragraph=\"\">You can easily get the number of key-value pairs in a Map by using the size attribute, whereas the number of key-value pairs in an object can only be confirmed manually<\/li>\n<\/ul>\n<p id=\"dec3\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">Now let\u2019s upgrade the difficulty of the problem. When clicking the button, you need to judge not only the status but also the user\u2019s identity:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qi r\">\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/**<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * Button click event<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * @param {number} status <\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * Activity status: 1 in progress, 2 in failure, 3 out of stock, 4 in success, 5 system cancelled<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> *<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> * @param {string} identity: guest, master<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"> *\/<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC8\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-en\">onButtonClick<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s1\">identity<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC9\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">identity<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-s\">&#8216;guest&#8217;<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC10\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">1<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC12\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">2<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC13\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC14\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">3<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC15\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC16\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">4<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC17\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC18\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">5<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC19\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC20\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC21\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC22\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC23\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">identity<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-s\">&#8216;master&#8217;<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC24\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">1<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC25\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC26\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">2<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC27\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC28\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">3<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC29\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC30\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">4<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC31\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC32\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">status<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">5<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC33\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC34\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><span class=\"pl-k\">else<\/span> <span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC35\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\">\/\/do sth<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC36\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex-js-LC37\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">}<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"pl-kos\">}<\/span><\/div>\n<\/div>\n<\/figure>\n<p id=\"5ebe\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">As you can see from the example above when your logic escalates to double judgment, your judgment doubles, and your code doubles.<\/p>\n<p id=\"bc1f\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">How can we code more cleanly?<\/p>\n<p id=\"67f3\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">Here is a solution:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qk r\">\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-s1\">actions<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Map<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">[<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;guest_1&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC3\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;guest_2&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC4\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;guest_3&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC5\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;guest_4&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC6\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;guest_5&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;master_1&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC8\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;master_2&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC9\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;master_3&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC10\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;master_4&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;master_5&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC12\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">[<\/span><span class=\"pl-s\">&#8216;default&#8217;<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><span class=\"pl-c\">\/*do sth*\/<\/span><span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">,<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC13\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC14\" class=\"blob-code blob-code-inner js-file-line\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC15\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">const<\/span> <span class=\"pl-en\">onButtonClick<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">identity<\/span><span class=\"pl-kos\">,<\/span><span class=\"pl-s1\">status<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-c1\">=&gt;<\/span><span class=\"pl-kos\">{<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC16\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">let<\/span> <span class=\"pl-s1\">action<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">actions<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">get<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">`<span class=\"pl-s1\"><span class=\"pl-kos\">${<\/span>identity<span class=\"pl-kos\">}<\/span><\/span>_<span class=\"pl-s1\"><span class=\"pl-kos\">${<\/span>status<span class=\"pl-kos\">}<\/span><\/span>`<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c1\">||<\/span> <span class=\"pl-s1\">actions<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">get<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">&#8216;default&#8217;<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n<tbody>\n<tr>\n<td id=\"file-complex2-js-LC17\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-s1\">action<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">call<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-smi\">this<\/span><span class=\"pl-kos\">)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span class=\"pl-kos\">}<\/span><\/div>\n<\/div>\n<\/figure>\n<p id=\"05b0\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">The core logic of the above code is: Two judgment conditions are spliced into a string to serve as the key of Map, and then the value corresponding to the corresponding string is directly searched during query.<\/p>\n<p id=\"8a11\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">Of course, we can also change Map to Object here:<\/p>\n<pre class=\"ic id ie if ig kb kc dt\"><span id=\"ccf0\" class=\"kd ke cn ar kf b bj kg kh r ki\" data-selectable-paragraph=\"\">const actions = {\n  'guest_1':()=&gt;{\/*do sth*\/},\n  'guest_2':()=&gt;{\/*do sth*\/},\n  \/\/....\n}<\/span><span id=\"dfc8\" class=\"kd ke cn ar kf b bj kj kk kl km kn kh r ki\" data-selectable-paragraph=\"\">const onButtonClick = (identity,status)=&gt;{\n  let action = actions[`${identity}_${status}`] || actions['default']\n  action.call(this)\n}<\/span><\/pre>\n<p id=\"c5c8\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">If readers find it a bit awkward to spell out the query as a string, there is another solution, which is to use a Map object as the key:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qj r\"><iframe loading=\"lazy\" class=\"eq t u im ak\" title=\"obj.js\" src=\"https:\/\/medium.com\/media\/6cb83c7c2d7d4c2eb4eaec886fc0a7c4\" width=\"680\" height=\"249\" frameborder=\"0\" scrolling=\"auto\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<\/figure>\n<p id=\"7eb9\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">You can also see the difference between a Map and an Object, where a Map can use any type of data as a key.<\/p>\n<p id=\"a855\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">Let\u2019s make it a little harder now. What if the status1\u20134 processing logic is the same in the guest case?<\/p>\n<p id=\"4e29\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">And the worst-case scenario is this:<\/p>\n<pre class=\"ic id ie if ig kb kc dt\"><span id=\"6dfa\" class=\"kd ke cn ar kf b bj kg kh r ki\" data-selectable-paragraph=\"\">const actions = new Map([\n  [{identity:'guest',status:1},()=&gt;{\/* functionA *\/}],\n  [{identity:'guest',status:2},()=&gt;{\/* functionA *\/}],\n  [{identity:'guest',status:3},()=&gt;{\/* functionA *\/}],\n  [{identity:'guest',status:4},()=&gt;{\/* functionA *\/}],\n  [{identity:'guest',status:5},()=&gt;{\/* functionB *\/}],\n  \/\/...\n])<\/span><\/pre>\n<p id=\"a623\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">A better approach would be to cache the processing logic functions:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qh r\"><iframe loading=\"lazy\" class=\"eq t u im ak\" title=\"cache.js\" src=\"https:\/\/medium.com\/media\/d5aa2a9b817018c8c8e16561e1505c10\" width=\"680\" height=\"425\" frameborder=\"0\" scrolling=\"auto\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<\/figure>\n<p id=\"1ba7\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">This is enough for daily needs, but seriously, it\u2019s still a bit annoying to have function A overwritten four times.<\/p>\n<p id=\"0d59\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">If things get really complicated, like identity has 3 states and status has 10 states, you need to define 30 processing logic, many of which are the same, which seems to unacceptable.<\/p>\n<p id=\"1337\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">And you can do this:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qg r\"><iframe loading=\"lazy\" class=\"eq t u im ak\" title=\"regcache.js\" src=\"https:\/\/medium.com\/media\/5ed8199b20097700bb599f31dd3e863e\" width=\"680\" height=\"359\" frameborder=\"0\" scrolling=\"auto\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/div>\n<\/div>\n<\/figure>\n<p id=\"f37f\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">The advantage of using Map instead of Object is more obvious because Regular type can be used as a key.<\/p>\n<p id=\"5ac1\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">If the requirement becomes: all guest cases need to send a log buried point, and different status cases need separate logical processing, then we can write as follows:<\/p>\n<figure class=\"ic id ie if ig ih\">\n<div class=\"ip r bl\">\n<div class=\"qe r\"><\/div>\n<\/div>\n<\/figure>\n<p id=\"9dba\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">That is to say, with the property of the array loop, any logic that meets the regular condition will be executed, so that both public logic and individual logic can be executed at the same time.<\/p>\n<h1 id=\"484d\" class=\"ko ke cn ar aq kp fe kq fg kr ks kt ku kv kw kx ky\" data-selectable-paragraph=\"\">Conclusion<\/h1>\n<p id=\"1906\" class=\"jf jg cn ar jh b fv kz fx la jk lb jm lc jo ld jq ev\" data-selectable-paragraph=\"\">This article has taught you eight ways to write logical judgments, including:<\/p>\n<ol class=\"\">\n<li id=\"ea1d\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq le ju jv\" data-selectable-paragraph=\"\">if\/else<\/li>\n<li id=\"7fc4\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">switch<\/li>\n<li id=\"b959\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">Unary judgment: stored in Object<\/li>\n<li id=\"bbec\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">Unary judgment: save to Map<\/li>\n<li id=\"51ff\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">Multiple judgment: concatenate the condition into a string and save it in Object<\/li>\n<li id=\"de5e\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">Multiple judgment: concatenate the condition into a string and store it in a Map<\/li>\n<li id=\"c731\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">Multiple judgment: save condition as an object in Map<\/li>\n<li id=\"005c\" class=\"jf jg cn ar jh b fv jw fx jx jk jy jm jz jo ka jq le ju jv\" data-selectable-paragraph=\"\">Multiple judgment: save condition as a regular expression in Map<\/li>\n<\/ol>\n<p id=\"0975\" class=\"jf jg cn ar jh b fv ji fx jj jk jl jm jn jo jp jq ev\" data-selectable-paragraph=\"\">So much for this article, and may the future of your life be filled with more than just <em class=\"jr\">if\/else<\/em> or <em class=\"jr\">switch<\/em>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">Clean up your code by removing \u2018if-else\u2019 statements Nifty techniques, I fear they will be soon be abused by too many people&#8230;.<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2020\/01\/25\/clean-up-your-code-by-removing-if-else-statements\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"link","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[50],"tags":[],"class_list":["post-6510","post","type-post","status-publish","format-link","hentry","category-javascript","post_format-post-format-link"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-1H0","jetpack-related-posts":[{"id":5254,"url":"https:\/\/monodes.com\/predaelli\/2019\/02\/17\/learn-pure-functions-with-javascript-cristi-salcescu-medium\/","url_meta":{"origin":6510,"position":0},"title":"Learn pure functions with JavaScript \u2013 Cristi Salcescu \u2013 Medium","author":"Paolo Redaelli","date":"2019-02-17","format":"link","excerpt":"Pure functions are easier to read, understand, test, debug and munch more. Source: Learn pure functions with JavaScript \u2013 Cristi Salcescu \u2013 Medium Learn pure functions with JavaScript Cristi Salcescu Feb 10 Photo by Ren\u00e9 Reichelt on\u00a0Unsplash Pure functions are easier to read, understand, test, debug and munch more. You\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5130,"url":"https:\/\/monodes.com\/predaelli\/2019\/01\/15\/intuitive-asynchronous-javascript-edwin-yung-medium\/","url_meta":{"origin":6510,"position":1},"title":"Intuitive Asynchronous Javascript \u2013 Edwin Yung \u2013 Medium","author":"Paolo Redaelli","date":"2019-01-15","format":false,"excerpt":"Escape callback hell! Source: Intuitive Asynchronous Javascript \u2013 Edwin Yung \u2013 Medium \u00a0 Asynchronous Javascript Explained Simply and Intuitively Edwin Yung Dec 29, 2017 Escape callback hell with this\u00a0article! Asynchronous Javascript is difficult to wrangle. The following is my quick attempt to elucidate their inner workings. Before we get started,\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4792,"url":"https:\/\/monodes.com\/predaelli\/2018\/10\/28\/telosys-code-generator-for-java-javascript-python-nodejs-php-c-etc\/","url_meta":{"origin":6510,"position":2},"title":"Telosys code generator for Java, JavaScript, Python, NodeJS, PHP, C#, etc","author":"Paolo Redaelli","date":"2018-10-28","format":false,"excerpt":"Telosys is a free code generator usable with different languages or frameworks : Java, JavaScript, Python, NodeJS, PHP, GoLang, C#, Angular, VueJS, etc Sorgente: Telosys code generator for Java, JavaScript, Python, NodeJS, PHP, C#, etc","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7201,"url":"https:\/\/monodes.com\/predaelli\/2020\/05\/12\/github-repos-that-should-be-starred-by-every-web-developer\/","url_meta":{"origin":6510,"position":3},"title":"GitHub Repos That Should Be Starred by Every Web Developer","author":"Paolo Redaelli","date":"2020-05-12","format":"link","excerpt":"GitHub Repos That Should Be Starred by Every Web Developer A list of GitHub repositories that will help you immensely with your knowledge and work-life as a programmer A List of Useful Resources for Front-End Developers https:\/\/github.com\/denysdovhan\/wtfjs https:\/\/github.com\/sindresorhus\/awesome List of (Advanced) JavaScript Questions JavaScript Algorithms and Data Structures Clean Code\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10970,"url":"https:\/\/monodes.com\/predaelli\/2023\/11\/21\/javascript-can-a-1-a-2-a3-ever-evaluate-to-true-stack-overflow\/","url_meta":{"origin":6510,"position":4},"title":"javascript &#8211; Can (a== 1 &#038;&#038; a ==2 &#038;&#038; a==3) ever evaluate to true? &#8211; Stack Overflow","author":"Paolo Redaelli","date":"2023-11-21","format":false,"excerpt":"javascript - Can (a== 1 && a ==2 && a==3) ever evaluate to true? - Stack Overflow Yes, it can. IMHO it is one of the several undesirable consequences of loosely typed languages. In fact, according to an almost anonymous user: If you take advantage of how == works, you\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8197,"url":"https:\/\/monodes.com\/predaelli\/2021\/02\/25\/a-post-mortem-in-5-acts-of-how-microsoft-privatized-open-source-killing-javascript-in-the-process\/","url_meta":{"origin":6510,"position":5},"title":"A Post-Mortem in 5 Acts, of How Microsoft Privatized Open Source, killing JavaScript in the Process","author":"Paolo Redaelli","date":"2021-02-25","format":"link","excerpt":"A Post-Mortem in 5 Acts, of How Microsoft Privatized Open Source, killing JavaScript in the Process After Microsoft\u2019s blitzkrieg take-over, the Open Source JavaScript community, as we know it, is coming to an end. Alex KleydintsFeb 6\u00b79 min read All things said and done, you must stand in awe, at\u2026","rel":"","context":"In &quot;Ethics&quot;","block_context":{"text":"Ethics","link":"https:\/\/monodes.com\/predaelli\/category\/ethics\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/6510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=6510"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/6510\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=6510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=6510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=6510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}