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([] ==![])

 

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