javascript中对条件判断语句的优化
来源:互联网 发布:mac虚拟机哪个好 编辑:程序博客网 时间:2024/05/22 09:42
不管写什么程序,平时都会用到条件语句,如:if...else...
switch
这样的语句,来达到对条件的判断。下面看来一段代码:
<code class="hljs matlab has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span> <span class="hljs-title" style="box-sizing: border-box;">abc</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(test)</span>{</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (test == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)<span class="hljs-cell" style="box-sizing: border-box;">{ console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是'</span>+test); }</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (test == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)<span class="hljs-cell" style="box-sizing: border-box;">{ console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是'</span>+test); }</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (test == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)<span class="hljs-cell" style="box-sizing: border-box;">{ console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是'</span>+test); }</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (test == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>)<span class="hljs-cell" style="box-sizing: border-box;">{ console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是'</span>+test); }</span>}abc(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);abc(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>);abc(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>);abc(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>
结果如下:
test的值是1
test的值是2
test的值是3
test的值是4
[Finished in 0.1s]
其实在平时的代码开发中这并没有什么问题,但是很多的时候我们都希望自己的代码能够变的优雅和简单易懂,并且尽可能少的减少重复的代码。对于以上的问题,在js中存在一个switch
来代替这样的多if
语句判断。
优化后的代码如下:
<code class="hljs javascript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span> <span class="hljs-title" style="box-sizing: border-box;">bcd</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(test)</span>{</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">switch</span>(test){ <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>: console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是'</span>+test); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>: console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是'</span>+test); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">default</span>: console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'test的值是null'</span>); }}bcd();bcd(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul>
结果如下:
test的值是null
test的值是1
那么在js中有没有更好的方法来做到呢?使用js对象的特点可以轻松对switch
进行优化,代码如下:
<code class="hljs javascript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span> <span class="hljs-title" style="box-sizing: border-box;">dcf</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(test)</span>{</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>({ cat :<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>{</span>console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'cat'</span>);}, dog :<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>{</span>console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'dog'</span>);}, zhiqiang : <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>{</span>console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'zhiqiang'</span>);} }[test] || <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>{</span>console.log(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'我是默认值'</span>);} )();}dcf();dcf(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'dog'</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>
我是默认值
dog
0 0
- javascript中对条件判断语句的优化
- javascript中对条件判断语句的优化
- iOS中条件语句的优化
- 条件语句的优化
- C语句中涉及到条件判断时的情况分析
- JSP中C标签的条件判断语句示例
- sql 语句中对like 的优化
- 条件语句的优化(旧)
- javascript中对变量类型的判断
- javascript中对变量类型的判断
- javascript中对变量类型的判断
- javascript中对变量类型的判断
- javascript的特殊条件语句
- javascript里的条件判断
- javascript里的条件判断
- javascript里的条件判断
- javascript里的条件判断
- javascript里的条件判断
- js call()和apply()方法使用
- 细菌繁殖
- app微博card链接
- IntelliJ IDEA 14 快捷键 非常实用(部分WebStorm也适用)
- LibSVM分类的实用指南
- javascript中对条件判断语句的优化
- STM32启动文件分析
- 隐马尔可夫模型攻略
- LeetCode OJ 之 Kth Largest Element in an Array(数组中的第k大元素)
- [applicationContext.xml] cannot be opened because it does not exist错误
- Auto Fix TextView
- Linux系统编程——进程调度浅析
- grep,egrep和fgrep的区别
- javascript中的ajax对象(一)