一、逻辑运算符的短路求值
逻辑与:表达式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不愧是灵活的语言,活用这些运算符可以让脚本代码提高性能,缺点是可读性不强。




就这样啊