最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中的一些隱式轉(zhuǎn)換和總結(jié)(推薦)

 更新時間:2017年12月22日 16:15:57   作者:莫忘001  
這篇文章主要介紹了JavaScript中的一些隱式轉(zhuǎn)換和總結(jié),非常不錯,具有參考借鑒價值,需要的朋友可以參考下

js中的不同的數(shù)據(jù)類型之間的比較轉(zhuǎn)換規(guī)則如下:

1. 對象和布爾值比較

對象和布爾值進行比較時,對象先轉(zhuǎn)換為字符串,然后再轉(zhuǎn)換為數(shù)字,布爾值直接轉(zhuǎn)換為數(shù)字

[] == true; //false []轉(zhuǎn)換為字符串'',然后轉(zhuǎn)換為數(shù)字0,true轉(zhuǎn)換為數(shù)字1,所以為false

2. 對象和字符串比較

對象和字符串進行比較時,對象轉(zhuǎn)換為字符串,然后兩者進行比較。

[1,2,3] == '1,2,3' // true [1,2,3]轉(zhuǎn)化為'1,2,3',然后和'1,2,3', so結(jié)果為true;

3. 對象和數(shù)字比較

對象和數(shù)字進行比較時,對象先轉(zhuǎn)換為字符串,然后轉(zhuǎn)換為數(shù)字,再和數(shù)字進行比較。

[1] == 1; // true `對象先轉(zhuǎn)換為字符串再轉(zhuǎn)換為數(shù)字,二者再比較 [1] => '1' => 1 所以結(jié)果為true

4. 字符串和數(shù)字比較

字符串和數(shù)字進行比較時,字符串轉(zhuǎn)換成數(shù)字,二者再比較。

'1' == 1 // true

5. 字符串和布爾值比較

字符串和布爾值進行比較時,二者全部轉(zhuǎn)換成數(shù)值再比較。

'1' == true; // true

6. 布爾值和數(shù)字比較

布爾值和數(shù)字進行比較時,布爾轉(zhuǎn)換為數(shù)字,二者比較。

true == 1 // true

許多剛接觸js的童鞋看到這么多的轉(zhuǎn)換規(guī)則就懵圈了,其實規(guī)律很簡單,大家可以記下邊這個圖

如圖,任意兩種類型比較時,如果不是同一個類型比較的話,則按如圖方式進行相應類型轉(zhuǎn)換,如對象和布爾比較的話,對象 => 字符串 => 數(shù)值 布爾值 => 數(shù)值。
另外,我們來看下一些需要"特別照顧"的。

來看一個有趣的題

[] == false;
![] == false;

這兩個的結(jié)果都是true,第一個是,對象 => 字符串 => 數(shù)值0 false轉(zhuǎn)換為數(shù)字0,這個是true應該沒問題,
第二個前邊多了個!,則直接轉(zhuǎn)換為布爾值再取反,轉(zhuǎn)換為布爾值時,空字符串(''),NaN,0,null,undefined這幾個外返回的都是true, 所以! []這個[] => true 取反為false,所以[] == false為true。

還有一些需要記住的,像:

undefined == null //true undefined和null 比較返回true,二者和其他值比較返回false
Number(null) //0

曾經(jīng)看到過這樣一個代碼:  (!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]*~+[]]] = sb , 你敢相信, 當時就嚇了 寶寶一跳。

剛接觸到時候,Js很讓我困惑,正是由于它‘善變',下面我來總結(jié)一下:

7. JS的數(shù)據(jù)類型: Number,Boolean,String,Undefined,Null,Symbol(es6新定義的)和 Object (注: Array是特殊的Object)

    typeof 返回的7中類型: number boolean string object undefined object function

MDN 這樣介紹Javascript: JavaScript 是一種弱類型或者說動態(tài)語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。這也意味著你可以使用同一個變量保存不同類型的數(shù)據(jù)

8. 下面來看下常見的隱式轉(zhuǎn)換:

  基本類型:

   運算符(+,-,*,/,%)操作時 轉(zhuǎn)換類型

    ”+“ 號運算符 :   

          

                    

      總結(jié): 當加號運算符時,String和其他類型時,其他類型都會轉(zhuǎn)為 String;其他情況,都轉(zhuǎn)化為Number類型 , 注: undefined 轉(zhuǎn)化為Number是 為'NaN‘, 任何Number與NaN相加都為NaN。

          其他運算符時, 基本類型都轉(zhuǎn)換為 Number,String類型的帶有字符的比如: '1a' ,'a1' 轉(zhuǎn)化為 NaN 與undefined 一樣。

      tip:(1)NaN 不與 任何值相等 包括自身,所以判斷一個值 是否為 NaN, 即用 "!==" 即可?! ?/p>

         (2) 轉(zhuǎn)換為 Boolean類型為 false 的有:null,0,'',undefined,NaN,false  

        (3)number() 與 parseInt() 都可以將對象轉(zhuǎn)化為Number類型,Number函數(shù)要比parseInt函數(shù)嚴格很多?;旧?,只要有一個字符無法轉(zhuǎn)成數(shù)值,整個字符串就會被轉(zhuǎn)為NaN?! ?/p>

  

  Object類型

    當object與基本類型運算時:

var obj = {
  toString: function(){
    return 6;
  },
  valueOf: function(){
    return 5;
  }
};
var obj1 = {
  valueOf: function(){
    return 'a';
  },
  toString: function(){
    return 'b';
  }
};

           

                  

      

            當對 obj,obj1 用Number()和String()換轉(zhuǎn)時

        

            總結(jié): Number類型會先調(diào)用valueOf(), String類型會先調(diào)用toString(),  如果結(jié)果是原始值,則返回原始值,否則繼續(xù)用toString 或 valueOf(),繼續(xù)計算,如果結(jié)果還不是原始值,則拋出一個類型錯誤; 

    看如下情況:

    

為什么 {} + [] = 0 ?  因為 javascript在運行時, 將 第一次{} 認為是空的代碼塊,所以就相當于 +[] = 0.  還有 {} +5 = 5, 同理。

總結(jié):

1. 類型錯誤有可能會被類型轉(zhuǎn)換所隱藏。

2. “+”既可以表示字符串連接,又可以表示算術加,這取決于它的操作數(shù),如果有一個為字符串的,那么,就是字符串連接了。

3. 對象通過valueOf方法,把自己轉(zhuǎn)換成數(shù)字,通過toString方法,把自己轉(zhuǎn)換成字符串。

4.具有valueOf方法的對象,應該定義一個相應的toString方法,用來返回相等的數(shù)字的字符串形式。

5.檢測一些未定義的變量時,應該使用typeOf或者與undefined作比較,而不應該直接用真值運算。

總結(jié)

以上所述是小編給大家介紹的JavaScript中的一些隱式轉(zhuǎn)換和總結(jié)(推薦),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家的支持!

相關文章

  • 一種Javascript解釋ajax返回的json的好方法(推薦)

    一種Javascript解釋ajax返回的json的好方法(推薦)

    下面小編就為大家?guī)硪黄环NJavascript解釋ajax返回的json的好方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • THREE.JS使用TransformControls對模型拖拽的代碼實例

    THREE.JS使用TransformControls對模型拖拽的代碼實例

    拖拽是前端實現(xiàn)中比較常用的一種效果,下面這篇文章主要給大家介紹了關于THREE.JS使用TransformControls對模型拖拽的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • JS實現(xiàn)禁止用戶使用Ctrl+鼠標滾輪縮放網(wǎng)頁的方法

    JS實現(xiàn)禁止用戶使用Ctrl+鼠標滾輪縮放網(wǎng)頁的方法

    這篇文章主要介紹了JS實現(xiàn)禁止用戶使用Ctrl+鼠標滾輪縮放網(wǎng)頁的方法,涉及javascript頁面元素與事件相關操作技巧,需要的朋友可以參考下
    2017-04-04
  • 支付寶小程序tabbar底部導航

    支付寶小程序tabbar底部導航

    這篇文章主要為大家詳細介紹了支付寶小程序重寫tabbar底部導航,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • js禁止頁面刷新與后退的方法

    js禁止頁面刷新與后退的方法

    這篇文章主要介紹了js禁止頁面刷新與后退的方法,實例分析了javascript屏蔽F5鍵、右鍵菜單、F1鍵等實現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • location對象的屬性和方法應用(解析URL)

    location對象的屬性和方法應用(解析URL)

    本文將與大家分享下location對象使用屬性和方法來解析URL的實例,感興趣的朋友可以參考下,希望對你有所幫助
    2013-04-04
  • JavaScript定義類的幾種方式總結(jié)

    JavaScript定義類的幾種方式總結(jié)

    本篇文章主要是對JavaScript定義類的幾種方式進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 如何在TypeScript?中實現(xiàn)接口的類

    如何在TypeScript?中實現(xiàn)接口的類

    這篇文章主要介紹了TypeScript?中實現(xiàn)接口的類,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 詳解web如何改變主題配色方法示例

    詳解web如何改變主題配色方法示例

    這篇文章主要為大家介紹了web如何改變主題配色方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 微信小程序下拉框組件使用方法

    微信小程序下拉框組件使用方法

    這篇文章主要為大家詳細介紹了微信小程序下拉框組件使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論

汕头市| 安阳县| 新民市| 苏尼特右旗| 永丰县| 崇明县| 铁岭县| 来安县| 西城区| 四会市| 页游| 鱼台县| 萝北县| 仁化县| 华坪县| 阿坝| 松阳县| 南陵县| 敖汉旗| 新河县| 阜平县| 南投县| 凉城县| 元江| 建湖县| 花莲市| 南和县| 八宿县| 元阳县| 信丰县| 新营市| 商丘市| 沂水县| 台安县| 柳江县| 福安市| 凤翔县| 乡宁县| 梧州市| 天水市| 光山县|