Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 1.42 KB

4.2.9 js 短路求值.md

File metadata and controls

29 lines (21 loc) · 1.42 KB

短路求值 && ||

几乎所有语言中||和&&都遵循“短路”原理,如&&中第一个表达式为假就不会去处理第二个表达式,而||正好相反。 

js也遵循上述原则。但是比较有意思的是它们返回的值。 

代码:var attr = true && 4 && “aaa”; 

那么运行的结果attr就不是简单的true或这false,而是”aaa” 

再来看看||: 

代码:var attr = attr || “”;这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用。
因为js不像php可以直接在型参数上定义func($attr=5)。
再次提醒你记住上面的原则:如果实参需要是0、""、null、false、undefined、NaN的时候也会当false来处理。 

if(a >=5){ 
alert("你好"); 
} 
可以写成: 

a >= 5 && alert("你好");

这样只需一行代码就搞定。但是需要注意的一点就是:js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低。
这就需要我们自己来权衡了。 
一方面精简js代码,能实质性的减少网络流量,尤其是大量应用的js公用库。
个人比较推荐的做法是:如果是相对复杂的应用,请适当地写一些注释。
这个和正则表达式一样,能够精简代码,但是可读性会降低,对读代码的人要求会高些,最好的办法就是写注释。