Javascript 布尔操作符总结

在一门编程语言中,布尔操作符的重要性堪比相等操作符。如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了。在像javascript这样弱类型语言更有其妙用,让我们的代码,简捷可靠。布尔操作符一共有3个: 与、或、非。

特性:

先来讨论一下,最简单的‘非!’

相对与和或来说,非更简单一点,先把操作数转换为布尔值,再取反,值不是true,就是false.

结论:逻辑非的返回值最后只有两个:true or false.      

与和或:

而与和或并不总是返回布尔值,&&和||操作主要遵循几大原则:

1.短路操作原则:如果第一个操作数能决定操作结果,就不会再对第二个操作数求值,直接返回第一个操作值。

2.求值过程中会被转型生成副本,但是返回值是原来值;

javascript中的逻辑操作中的&&与||操作并不是总是返回True和False,它返回的值是最后确定结果的值,例:

Null&&true         // null就确定结果了返回 null

true&&undefined     // undefined确定结果返回undefined

Object&&{}&&[]&&2     //返回2

Object&&{}&&2&&[]     //空数组

 Null||9                        //   值为9

null||9||undefined      // =9

null||undefined      // undefined

概括的说:

&&操作:值为真时,返回最后一个值,到最一个才能确定结果;

值为假时,返回第一个假值,一旦有假值结果确定为假.

||操作 :值为真时,返回第一个真值,一旦有真结果为真;

值为假时,返回最一个值,到最一个才能确定结果.

所以说,与和或操作,返回的是最后确定结果的值

结论:与和或操作,返回的是最后确定结果的值

用法:

可写出简练的代码。

与:

1.通过判断某个对象是否存在来赋值;

var object=object1&&object2; //当object1存在时才赋object2的值给object.

2.可以防止访问属性错误(原理同1);

查询一个不存生的属性并不会报错,但如果对象不存在,试着查询这个不存在属性就会报错。

var box;

var len=box.length;//抛出一个类型错误异常,程序不向下解析

var len=box&&box.length;//不会报错

或:

1. 可优先选取值。

        Var object=object1||object2; //优先object1

2.优先执行函数,以下是Jquery中$.globalEval的源码

    globalEval: function( data ) {
if ( data && rnotwhite.test( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
//可用if-else让代码更易读,这样更简洁
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
}

非:

可利用非操作来进行布尔类型转换。如下:

   function isSortable(object){

       return !!object.sort;
}
           !!object.sort等价于Boolean(object.sort)
上一篇:【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第十二节)


下一篇:python框架之Django(4)-视图&路由