这样的例子
经常被看到。
复制代码代码如下所示:
VaR;
var =!!一;
默认情况下A是未定义的。A是真的,!!!A是假,所以B的值是假的,不是未定义的,没有其他的值,主要是为了便于以后的判断。
它通常用于将后者表达式强制为布尔
类型的数据(布尔),即只有true或false;
由于Javascript是一种弱
语言类型(变量没有固定的数据类型),所以有时需要强制
输入相应的类型,比如:
复制代码代码如下所示:
= parseInt(1234)
a = 1234 - 0
转换为数字
b = 1234 + /将被转换为字符串
(C = someobject ToString) / /将对象转换为字符串
第一和第四是显式转换,2和3是隐式转换。
布尔转换,Javascript约定规则
假,undefinded,null,0,假
真的,1,somestring { },和对象是真实的
对于空的、未定义的和其他隐式变换值,使用
运算符时将生成true结果,所以两个感叹号的
函数是将这些值转换为等效布尔值。
再看一遍。
复制代码代码如下所示:
变量Foo;
警报(!Foo);在 / / undifined情况,感叹号返回true;
警报(!如果是NULL,感叹号返回也是
正确的;
标志:真};
var测试=!!o.flag; / /无功等于测试= o.flag | |假;
警报(测试);
在undifined和空证明这个例子中,用一个感叹号是真实的,用两个感叹号返回的是
错误的,所以两个感叹号的
作用是,如果你显式
设置该变量的值(非空 / / / 0 undifined等效),结果将根据该变量返回的实际值,如果没有设置,结果将返回false。