這篇文章帶給大家的內容是關於js隱式轉換的知識講解(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
[] == ![] //true ==> "" == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object] [null] == "" //true ==> [""] == ""
#一元運算子:透過Number()轉換;其中包含*號運算符,/號運算符,都是經Number()轉換
+undefined //NaN
#邏輯運算子:!等價於Boolean(),將操作數進行布林值類型轉換
位元運算:~, |, &, ^;當一邊運算元為NaN時,可等價於運算元為0;
//由以下变化可以证得: NaN ^ NaN ^ NaN = 0
加號運算符,比較複雜
#優先順序最高的是字串,任何運算元與字串相加都會將其String (x)成字串,再進行字串拼接
console.log("a" + 1); //"a1" console.log("a" + "1"); //"a1" console.log("a" + false); //"afalse" console.log("a" + undefined); //"aundefined" console.log("a" + NaN); //"aNaN" console.log("a" + null); //"anull" console.log("a" + {}); //"a[object Object]"
其次number,而object在正常情況下輸出的就是string類型
//console.log(1 + "1"); //"11" console.log(1 + 1); //2 console.log(1 + true); //2 console.log(1 + undefined); //NaN console.log(1 + NaN); //NaN console.log(1 + null); //1 console.log(1 + {}); //"1[object,Object]"
當一方為Boolean,或者兩方都是當 Boolean時,都將其進行Number處理,同理undefined與null也一樣
console.log(true + true); //2 console.log(true + undefined); //NaN console.log(true + NaN); //NaN console.log(true + null); //1 console.log((true + [NaN])); //"trueNaN"
減號,則將兩邊都進行Number()處理
#比較運算:==, >, <, >=, >=, != 遵循規則(摘自高程3):
值得注意的是:物件間的>=與= =(!=)比較方式是不同的,前者是toString()回傳值的比較,後者是引用位址的比較
當都是兩邊都是字串時,會依照字元編碼大小進行比較
當一方運算元為boolean,string,object,轉成number型別的數值再進行比較;
console.log("NaN" == NaN); //false console.log(undefined == null); //true console.log({} >= {1:2}); //true console.log({1:2} != {}); //true console.log({} == {1:2}); //false console.log([1] == [1]); //false console.log(null == 0); //false
以上是js隱式轉換的知識解說(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!