<script type="text/javascript">
//逻辑非,适用于任何数据类型
// alert(!NaN); true
// alert(!undefined); true
// alert(!null); true
// alert(!""); true
//alert(!"123"); false
//alert(!new Object()); false
//alert(!1); false
//alert(!0);true
//alert(!true);false
//alert(!false);true
//逻辑与(短路运算符,当前面能确定结果不再往后执行),适用任何数据类型
//alert(!true&&aaa);//此时并不会报错,因为!true为false可以确定整个表达式的结果了,不再执行到未声明的aaa那
//alert(true&&bb)//报错,因为true前面这部分还无法确定整个表达式的结果,所以会往后执行到bb发现未定义报错
//alert(!1&&0);//false
//alert(1&&2);返回2
//alert(undefined&&1);undefined
//alert(null&&1);null
//alert(NaN&&1);NaN
//逻辑或((短路运算符,当前面能确定结果不再往后执行),适用任何数据类型
//alert(!0||aa);//此时并不会报错,因为!0为true可以确定整个表达式的结果了,不再执行到未声明的aa那
//alert(!1||aa);//报错,因为!1前面这部分还无法确定整个表达式的结果,所以会往后执行到aa发现未定义报错
//alert(1||2);1
//alert(true||false); true
//alert(false||false);false
//Number() 适用任何数据类型,parseInt(),parseFloat将字符串转成数值类型
//alert(Number(null));0
//alert(Number(undefined));NaN
//alert(Number("123"));123
//alert(Number("dad"));NaN
//alert(Number(""));0
//alert(Number(NaN));NaN
//alert(Number("1255aa"));NaN,然而parseInt("12aa")会解析到不是数字的位数返回12
//alert(parseInt("122aa"));
//alert(Number("11.21"));11.1
//alert(Number("11.21aa"));NaN,然而parseFloat()会解析到第一个小数点后面的数字位数返回 11.21
//alert(parseFloat("11.22a"));11.22
//alert(parseFloat("11.22.33"));11.22
//乘法操作符适用于任何数据类型
//乘法操作中的某个值不是数值的话,js后台默认会用Number()将其转换,再进行计算,js是松散类型
//很多东西会在后台帮我们完成比如if(obj) 会在后台通过Boolean() 帮我们把obj转成布尔值
//alert(1*"");0 js后台会把“”转化成0进行乘法计算
//alert(1*true);1
//alert(1*false);0
//alert("11"*"1");11
//alert("ab"*1);NaN
//alert(null*1);0
//alert(undefined*1);NaN
//alert(new Object()*1);NaN
//alert(Number.MAX_VALUE*Number.MAX_VALUE);infinity无限大
//除法的规则会乘法类似,某个值不是数值的话,js后台默认会用Number()将其转换,再进行计算
//alert(1/true);1
//alert("dd"/1);NaN
//alert(1/0);//infinity无限大
//求模方法也是与以上两个方法类似,某个值不是数值的话,js后台默认会用Number()将其转换,再进行计算
//alert(2%2);0
</script>