标签:
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个boolean。
它的流程是:先将这个值转换成boolean,然后取反,规则如下:
1.操作数是一个对象,返回false;
var box =!{}; alert(box);//false
2.操作数是一个空字符串,返回true;
var box =!‘‘; alert(box);//true
3.操作数是一个非空字符串,返回false
var box =!‘lx‘; alert(box);//false
4.操作数是数值0,返回true;
var box =!0; alert(box);//true
5.操作数是任意非0数值(包括infinty),false;
var box =!1; alert(box);//false
6.操作数是null,返回true;
var box =!null; alert(box);//true
7.操作数是NaN,返回true;
var box =!NaN; alert(box);//false
8.操作数是undefined,返回true;
var box =!undefined; alert(box);//false
说明:而使用两次逻辑非运算符就是将值转成成布尔值取反再取反,相当于对值进行Boolean()转型函数处理。
var box = !!!o;//可以这么写,但无意义
总结:看似有八条,太多了数过来。我们可以从结果来看,实际上就两条:
1.结果为true的:null、undefined、NaN、空字符串、0……
2.结果为false:对象(Object)、非空字符串、非0的数值……
标签:
原文地址:http://www.cnblogs.com/liangcheng11/p/5154505.html