<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          js中“=”,“==”,“===”的使用和深入理解

          時間:?2017-11-29閱讀:?1518標簽:?js知識

           Js支持“=”、“==”和“===”的運算符,我們需要理解這些 運算符的區別 ,并在開發中小心使用。它們分別含義是:

          = 為對象賦值 
          == 表示兩個對象toString值相等
          === 表示兩個對象類型相同且值相等

          雖然 "=="和"==="運算符用于比較兩個值是否相等,相等則返回true,否則返回false。但是它們對相等的定義不盡相同。


          例子1:

          var x='1';
          if(x==1){
          	x+= 2
          }
          console.log(x);//輸出12

          我們可以看出如果使用“==”,它并沒有判斷值的類型,這是由于它是先將原始類型的數據都會轉換成數值類型再進行比較。所以出現了‘1’==1的情況。


          例子2:

          console.log(0 == '0')//true 
          console.log(0 == '')//true 
          console.log('0' == '')//false
          
          console.log(false == 'false')//false
          console.log(false == '')//true
          console.log(false == '0')//true
          
          console.log(false == undefined )//false
          console.log(false == null )//false
          console.log(null == undefined)//true
          
          console.log('\t\r\n' == 0) //true

          隱藏的類型轉換會出現一些違反常理的結果,這就是為什么建議盡量不要使用“==”運算符


          例子3:

          var a=0,b,c='0';
          a=b;b=c;
          console.log( a===c );//false
          console.log( a===b );//false
          console.log( b===c );//true

          出現上面的原因,可以看出js中使用“===”并不具有傳遞性。 a = b b = c,并不能證明a === c


          總結:

          1.嚴格相等運算符“===”首先計算其操作數的值,然后比較這兩個值,比較過程中沒有任何類型轉換:

          • 如果兩個值類型不相同,則它們不相等。
          • 如果兩個值都是null或者都是undefined,則它們不相等。
          • 如果兩個值都是布爾值true或都是布爾值false,則它們不相等。
          • 如果其中一個值是NaN,或者兩個值都是NaN,則他們不相等。NaN和其他任何值都是不相等的,包括它本身!通過X!=X來判斷X是否為NaN,只有在X為NaN的時候,這個表達式的值才為true。
          • 如果兩個值為數字且數值相等,則它們相等。如果一個值為0,另一個值為-0,則它們同樣相等。
          • 如果兩個值為字符串,且所含的對應位上的16位數 完全相等,則它們相等。如果它們的長度或內容不同,則它們不等。兩個字符串可能含義完全一樣且所顯示出的字符也一樣,但具有不同編碼的16位值。javaScript并不對Unicode進行標準化的轉換,因此像這樣的字符串通過“===”和“==”運算符的比較結果也不相等。
          • 如果兩個引用值指向同一個對象、數組或函數,則它們是相等的。如果指向不同的對象,則它們是不相等的,盡管兩個對象具有完全一樣的屬性。
          • 相等運算符“==”和恒等運算符相似,但相等運算符的比較并不嚴格。如果兩個操作數不是同一類型,那么相等運算符會嘗試進行一些類型轉換,然后進行比較:
          • 如果兩個操作數的類型相同,則和上文所述的嚴格相等的比較規則一樣。如果嚴格相等,那么比較結果為相等。如果它們不嚴格相等,則比較結果為不相等。

          2.如果兩個操作數類型不同,“==”相等操作符也可能會認為它們相等。檢測相等將會遵守如下規則和類型轉換:

          • 如果一個值是null,另一個是undefined,則它們相等。
          • 如果一個值是數字,另一個是字符串,先將字符串轉換為數字然后使用轉換后的值進行比較。
          • 如果其中一個值是true,則將其轉換為1再進行比較。如果其中一個值是false,則將其轉換為0再進行比較。
          • 如果一個值是對象,另一個值是數字或字符串,先將對象轉換為原始值,然后再進行比較。對象通過toString()方法或者valueOf()方法轉換為原始值。JavaScript語言核心的內置類首先嘗試使用valueOf(),再嘗試使用toString(),除了日期類,日期類只能使用toSring()方法轉換。那些不是JavaScript語言核心中的對象則通過各自的實現種定義的方法轉換為原始值。
          • 其他不同類型之間的比較均不相等。
          站長推薦

          1.阿里云: 本站目前使用的是阿里云主機,安全/可靠/穩定。點擊領取2000元代金券、了解最新阿里云產品的各種優惠活動點擊進入

          2.騰訊云: 提供云服務器、云數據庫、云存儲、視頻與CDN、域名等服務。騰訊云各類產品的最新活動,優惠券領取點擊進入

          3.廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入

          鏈接: http://www.modern-decoration.com.cn/article/detial/192

          javascript中什么是句柄?

          一個句柄是指使用的一個唯一的整數值,即一個4字節(64位程序中為8字節)長的數值,來標識應用程序中的不同對象和同類中的不同的實例。

          javascript不可變性是什么?

          不可變性即某個變量在進行了某個操作之后,其本身沒有發生變化,比如對于字符串而言,對字符串的任何操作都會改變字符串本身的值,而是在字符串的基礎上復制出來一個然后再改變,這樣我們就說是不可變的

          為什么javascript不起作用?

          JavaScript是一種屬于網絡的腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。

          javascript怎么判斷按鈕被點擊?

          JavaScript可以通過Event對象的target事件或srcElement(IE瀏覽器支持)來判斷按鈕是否被點擊。Event對象代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、鼠標的位置、鼠標按鈕的狀態。

          javascript由幾部分組成?

          JavaScript有三部分組成。分別為核心(ECMAScript) 、文檔對象模型(DOM)、瀏覽器對象模型(BOM)。這三部分分別描述了該語言的語法和基本對象、處理網頁內容的方法和接口、與瀏覽器進行交互的方法和接口。

          Js輸出方式有哪些?

          在編寫JavaScript代碼的時候, 一定要記住每一句代碼后面都需要添加一個分號, 并且這個分號必須是英文的分號,我們會發現有時候不寫分號程序也能夠運行, 這里并不是因為不需要分號, 而是瀏覽器自動幫助我們添加了分號

          7個常見的 JavaScript 測驗及解答

          我相信學習新事物并評估我們所知的東西對自己的進步非常有用,可以避免了我們覺得自己的知識過時的情況。在本文中,我將介紹一些常見的 JavaScript 知識。請享用!

          Js中constructor指向問題

          首先用一個例子指出來constructor存在形式。由上面的代碼我們總結出結論1:上面的代碼在控制臺可以看出constructor是指向構造器Fruit的引用。這個地方就有點奇怪了。這個constructor到底指向的是那個實例的構造器?

          javascript難點是什么?

          javascript難點是什么?下面本篇文章就來給大家介紹一下10個JavaScript難點,感興趣的小伙伴們可以參考一下,希望對大家有所幫助。立即執行函數,即Immediately Invoked Function Expression (IIFE),正如它的名字

          Js如何獲取ul中li的個數?

          javascript如何獲取ul中li的個數?下面本篇文章就來給大家介紹一下使用javascript獲取ul中li個數的方法,希望對大家有所幫助。

          內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權或違規,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全運營推廣

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网