你们都知道,不管是.NET仍是java或是其余语言都会有 或 与 非的操做,这里我要讨论的是 JS里面的 || 和 && 操做。由于项目里面用到了 || 的操做,原本也不是用不到,只是忽然想用一下,而后看了看其余的博客,发现原来这个东西没那么简单,JS真是高深,仍是好好研究的好。书归正传:html
文章参考:http://www.jb51.net/article/21339.htmjava
||操做 :首先声明:在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false。||操做就是若是前边的表达式为false那么就取后边的值。好比 <a>||<b> 若是<a>是false,那么取<b>的值,同理:<a>||<b>||<c>只要<a><b>都为false 那么取<c>。因此咱们看比较高级的js代码里常常会有这种代码: var obj=obj||{};(若是obj为undefined或者空,那么从新定义为{})ide
&&操做:若是前边的表达式为true,那么取后边的值,若是前边任意一个表达式为false,那么取false这个值。这句话用代码表示吧:spa
alert(typeof ("11" && undefined && "test" && {})); //结果 undefined alert(typeof([] && "test" && 5)); //结果 number 取值 5
那么 ||操做和 &&操做有什么用呢。它能够精简代码。例如:.net
function test() { var a = 4; //if (a > 5) { alert("a是大于5的"); } else { alert("a是小于5的"); } var result = a > 5 && "a是大于5的" || "a是小于5的"; alert(result);//结果 a是小于5的,若是看不懂,在仔细看一下他们(|| &&)的定义 }
结尾:你知道这些值是什么吗?htm
alert(undefined); //undefined alert(typeof (null)); //object alert(typeof (undefined));//undefined alert(typeof (NaN)); //number alert(typeof (5)); //number alert(typeof (!!5)); //boolean alert(parseInt("aa123")); //NaN alert(parseInt("123aa")); //123