3、js中的运算符

 一、说一下js中类型转化的规则? 为false的值:false、undefined、NaN、‘’、0

// 说一下js中类型转化的规则?
// false的值 
// false、undefined、null、''、0、NaN
// 其他值都为true
// ! 可以把这个值转化为boolean类型。

console.log(!'');

// 运算 +(字符串拼接的含义) - * /  1/true   1/'a'
console.log(1/'a'); 

// + 运算 字符串拼接
// 1) 数字和非字符串相加     Null相加0,     undefined:数字和undefined相加 NaN 
console.log(1+true);
console.log(1+null);
console.log(1+{});  //1[object Object]

//非数字相加
console.log(true+true);
console.log(true+{});   //如果有一方为字符串,就会认为是字符串拼接

// 对象中有2个方法:valueOf  toString();
let obj={
    [Symbol.toPrimitive](){
        return 500;
    },
    valueOf(){
        return {};  //返回的并不是一个原始类型
    },
    toString(){
        return 200;
    }
}
console.log(true+obj);
console.log({}.valueOf());  //返回的是 {}
// + - 这个符号 !
console.log(typeof +'a');
console.log(1+ +'123')
console.log((0.1+0.2)==0.3)

 二、比较运算符 > = <

// 比较运算 >= <
console.log('a'.charCodeAt(0));
console.log('b'.charCodeAt(0));

console.log('a'<'bbb');  //ascii
console.log(1<'123');  // 如果可以转化成字符串,如果不能转化成数字,就返回false

// ==
console.log(null==undefined);  //true
console.log(null===0);   //false 
// null 和undefined 和其他类型比较返回的都是false

console.log({}=={});   //返回的是引用空间
console.log(NaN==1);   //NaN和任何类型比较都不相等。
console.log('1'==1);   //将字符串转化成数字
console.log(1==true);  //如果是boolean类型,会吧boolean转成数字

// 对象和字符串 数字 Symbol 比较的时候   会把当前的对象转化成原始类型
console.log({}=='[object Object]');

// [] ==![]  单目运算优先级更高
// []==false  //false 是0,true是1
// []==0    [].valueOf()
// []==0   [].toString()
// ''==0   Number('');
// 0=0
// 相等
console.log([] ==![])

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章