p; //true
0 == null //false
注:只有null和null相等的,undefined和undefined相等的 undefined == null值为true,这三者才为true
总结:number和string看起来一样就为true;
boolean转换为number一样,就为true;(true -> 1,false -> 0)
如果进行运算boolean类型根据上述转换,再和number值运算
string和boolean,即使看起来一样,也为false;
5)
逻辑运算符 (表示false的值有null、NaN、undefined、false、0、“”)
总结:逻辑与和逻辑或的返回值都是跳出判断的值,即哪个操作跳出来就返回哪个操作数
非!(NOT) 可以将任何类型的数据转换成boolean类型
!!a可以看成Boolean(a), boolean类型包装器
6)
三目运算符 (variable = boolean_expression ? true_value : false_value;)
可以简化if···else···语句
7)两者运算 m+n
1、当m,n不为String,Object类型的时候,先将m,n转换为Number类型,转换Number类型可以参考类型转换知识点,然后再进行计算
2、当m,n有一个为String,无论另一个操作数为何(但不为对象)都要转换为String,然后再进行拼接
3、当m,n 有一个为对象,如果该对象既重写toString,又重写了valueOf方法,先调用valueOf方法获 取返回值,将该返回值和另外一个操作数进行运算。如果该对象没有重写valueOf方法,将调用 toString方法获取返回值,将该返回值和另外一个操作数进行运算。
//对象相加
var obj = {
"name": "zhangsan",
"age": 20,
toString: function(){
return "this is a obj"
},
valueOf: function(){
return "this is a func"
}
}
var c = "str"
console.log(obj);
console.log(c+obj); //strthis is a func
alert(obj); //this is a obj
9、类型转换
假性值:表示false的值有
null、NaN、undefined、false、0、“”,这个尤为重要
1)
其他类型转换string类型:
①toString()函数 另外null、undefined不能转换,其他类型都能
var a = 12;
a.toString(); //'12',如果括号里有数字,就需要按照这个数字的进制来转换,例如 a.toString(8); //"14"
注:number类型的具体值不可以直接调用toString()方法,但可以用括号括起来使用,括号括起来的是大类型数据,基础数据类型没有属性和方法
②String()函数 任意类型都能转换
③字符串的拼接+
2)
其他类型转换Boolean类型
①Boolean()函数 任意类型都可转换
假性值都为false,其他的值都为true
②非!(NOT) 可以将任何