如果其他javascript中如何消除

  介绍

这篇文章主要介绍了javascript中如何消除如果别的,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

<强>

优化方案1:对象对象

const statusStr={   & # 39;1 & # 39;:& # 39;待付款& # 39;,   & # 39;2 & # 39;:& # 39;待发货& # 39;,   & # 39;3 & # 39;:& # 39;已发货& # 39;,   & # 39;4 & # 39;:& # 39;交易完成& # 39;,   & # 39;5 & # 39;:& # 39;交易关闭& # 39;,   & # 39;默认# 39;:& # 39;& # 39;   }   const getStatus=(地位)=祝辞{   返回statusStr[状态]| | statusStr[& # 39;默认# 39;】   }

将判断条件作为对象的属性名,将处理逻辑作为对象的属性值,在按钮点击的时候,通过对象属性查找的方式来进行逻辑判断。

const statusStr=新地图([   & # 39;1 & # 39;:[& # 39;待付款& # 39;],   & # 39;2 & # 39;:[& # 39;待发货& # 39;],   & # 39;3 & # 39;:[& # 39;已发货& # 39;],   & # 39;4 & # 39;:[& # 39;交易完成& # 39;],   & # 39;5 & # 39;:[& # 39;交易关闭& # 39;],   & # 39;默认# 39;:[& # 39;& # 39;],   ])   const getStatus=(地位)=祝辞{   让行动=statusStr.get(状态)| | statusStr.get(& # 39;默认# 39;)   返回操作[0];   }

这样写用到了es6里的地图对象,那么地图对象和对象对象有什么区别呢?

一个对象通常都有自己的原型,所以一个对象总有一个“prototype"键。   一个对象的键只能是字符串或者符号,但一个映射的键可以是任意值。   你可以通过大小属性很容易地得到一个映射的键值对个数,而对象的键值对个数只能手动确认。

<强>

现在把问题升级一下,以前按钮点击时候只需要判断状态,现在还需要判断用户的身份:
“举个栗子:“

const>=新地图(const行动(   [& # 39;guest_1& # 39;()=祝辞{/*做某事*/}),   [& # 39;guest_2& # 39;()=祝辞{/*做某事*/}),   [& # 39;guest_3& # 39;()=祝辞{/*做某事*/}),   [& # 39;guest_4& # 39;()=祝辞{/*做某事*/}),   [& # 39;guest_5& # 39;()=祝辞{/*做某事*/}),   [& # 39;master_1& # 39;()=祝辞{/*做某事*/}),   [& # 39;master_2& # 39;()=祝辞{/*做某事*/}),   [& # 39;master_3& # 39;()=祝辞{/*做某事*/}),   [& # 39;master_4& # 39;()=祝辞{/*做某事*/}),   [& # 39;master_5& # 39;()=祝辞{/*做某事*/}),   [& # 39;默认# 39;()=祝辞{/*做某事*/}),   ])   const> const行动={   & # 39;guest_1& # 39;:()=祝辞{/*做某事*/},   & # 39;guest_2& # 39;:()=祝辞{/*做某事*/},//....   }   const>=新地图(const行动(   [{身份:& # 39;客人# 39;,状态:1},()=祝辞{/*做某事*/}),   [{身份:& # 39;客人# 39;,状态:2},()=祝辞{/*做某事*/}),//?   ])   const>函数init () {   如果(isAnswer===1) {   如果(isOldUser===1) {//?   }else if (isOldUser===2) {//?   }   }else if (isAnswer===2) {   如果(isOldUser===1) {//?   }else if (isOldUser===2) {//?   }   }else if (isAnswer===3) {   如果(isOldUser===1) {//?   }else if (isOldUser===2) {//?   }   }   }


const规则=[   {   匹配(旧){如果(一个===1){返回true}},   行动(旧){   如果(老===1){//瓆   else if(老===2){//瓆   }   },   {   匹配(旧){如果(一个===2){返回true}},   行动(旧){   如果(老===1){//瓆   else if(老===2){//瓆   }   },   {   匹配(旧){如果(一个===3){返回true}},   行动(旧){   如果(老===1){//瓆   else if(老===2){//瓆   }   }   ]   init函数(旧){   (让我=0;我& lt;rules.length;我+ +){//如果返回现实   如果(规则[我]。匹配(旧)){   规则[我]。行动(旧)   }   }   }   init (isAnswer isOldUser)

虽然可能看着是治标不治本,其实不然,init函数的复杂度大大的降低了。我们已经把控制流程的复杂逻辑,拆分到determineAction函数中

进口R & # 39; ramda& # 39;   var fn=R.cond ([   (斜边(0)R.always(& # 39;水冻结在0°c # 39;)),   (斜边(100),R.always(& # 39;水的沸点是100°c # 39;)),   (R。T, temp=比;& # 39;没有什么特别发生在& # 39;+临时+ & # 39;°c # 39;】   ]);   fn (0);//=比;& # 39;水冻结在0°c # 39;   fn (50);//=比;& # 39;没有什么特别发生在50°c # 39;   fn (100);//=比;& # 39;水的沸点是100°c # 39;

如果其他javascript中如何消除