一、逻辑运算符的短路求值
逻辑与:表达式A && 表达式B
作用:表达式A成立(非0、NaN、undifined、null、false)则继续运行表达式B,否则不会运行表达式B。

var a;
    a = (5-1)&&0;//0
    a = ('a'-1)&&0;//NaN

var a;
    a&&a=3;//等价于if(a){a=3;}

逻辑或:表达式A || 表达式B
作用:表达式A不成立(0、NaN、undifined、null、false)则继续运行表达式B,否则不会运行表达式B。

var a;
    a = (5-1)||0;//4
    a = ('a'-1)||0;//0
    a = false || null //null,Java中这个会报错,因为语法限制两边都应该是布尔类型。

var a;
    a||a=3;//等价于if(!a){a=3;}

逻辑非: ![!]表达式
作用:强制转换为布尔类型

var a;//undifined
    var b;
    b = !a;//true
    b = !!a;//false


二、位运算符强制转换类型
格式:表达式 >> 0 或 表达式 << 0
1.非数字转换为数字,数字则继续保持原值,这个方法用来代替=比parseInt再好用不过

var a;
    a = 'ABC'>>0;//0,等价于NaN转换为Number
    a = '123'>>0;//123
    a = false>>0;//0

2.布尔true会被转换为1;

var a;
    a = true>>0;//1
    a = true<<4;//16


总结:Javascript不愧是灵活的语言,活用这些运算符可以让脚本代码提高性能,缺点是可读性不强。

, ,
Trackback

only 1 comment untill now

  1. 就这样啊

Add your comment now

Please wrap all source codes with [code][/code] tags.