js比較運算子

2021-08-28 16:18:03 字數 1022 閱讀 2062

比較運算子分類: 「相等"與"非相等」

「非相等」

依據ecma-262 5.1版本,js非相等比較的實現是依靠乙個抽象關係比較演算法實現的.而這個演算法主要由乙個比較器和資料型別轉換的toprimitive抽象操作構成.

參考資料:抽象關係比較演算法 , toprimitive抽象操作 , 四種關係運算子的實現邏輯

(關於資料型別轉換,也可以參考我的另一篇筆記: 加法與資料型別轉換)

1.抽象關係比較演算法(the abstract relational comparison algorithm)

說明:(1)當被比較的兩個表示式x和y都是字串時,逐字元比較兩串各個字元的unicode碼點,最後得出結果.

(2)當x和y之中至少有乙個不是字串時:

任務: 兩個表示式x和y作某種比較

總結:

1.當x與y中至少有乙個不是字串時,比較的是轉換為number型別後的值.(因為指定toprimitive的hint為number)

2.因為當r=undefiend時,此時至少有乙個表示式的結果為nan(px與py至少乙個為nan),故統一返回false.

3.當兩表示式的計算結果均非nan時,>和《可由leftfirst取值不同而分別得到;<=與》=可由相同條件下的》和《分別求反得到.

相等1.嚴格相等:

x,y 均為string:完全相同的字串時,返回true,否則返回false.

x,y 均為boolean:同為true或同為false時,返回true,否則返回false.

嚴格相等與嚴格不相等的實現:

2.一般相等:

均為string型別,當x與y為完全相同的字串時,返回true;否則返回false

均為boolean型別,x與y相同時返回true;否則返回false

均為復合型別時,x與y指向同乙個的物件/陣列/函式時,返回true;否則返回false.(位址值相同)

如果x與y型別不同時:

一般相等與一般不相等的實現:

JS運算子 算術運算子 比較運算子 賦值運算子

兩邊的變數都是number型別 則是單純的加法運算 當字串出現時 結果是字串型別 字串之後的內容 不論什麼型別 都會被作為字串進行拼接 例子 var num1 10 var num2 20 num num1 num2 var result num1 num2 num1 false console.l...

js 比較運算子 邏輯運算子

運算子 運算子 1.純數字,加法數 算 2.加好左右只要有字串都得字串 字串鏈結 如 var a 1 1 a 1 1 document.write a 此時輸出2a11 在計算機中可以除0,任何數除0都得無窮。無窮 infinity 0除0得nan 非數,非數也是數 運算子 a 即 a 1 即 a ...

js 算術運算子和比較運算子

自增1 自減單獨使用的 字首和字尾都是自增自減,沒有什麼特別卻別 和其他表示式一起使用是,作為字首,先自增自減,再做其他操作 作為字尾,先做其他操作再自增自減 var num 5 num 相當於 num num 1 console.log num 4 num console.log num 5 nu...