真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括藍(lán)山網(wǎng)站建設(shè)、藍(lán)山網(wǎng)站制作、藍(lán)山網(wǎng)頁制作以及藍(lán)山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,藍(lán)山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到藍(lán)山省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1. 對象和布爾值比較

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

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

2. 對象和字符串比較

對象和字符串進(jìn)行比較時(shí),對象轉(zhuǎn)換為字符串,然后兩者進(jì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ù)字進(jìn)行比較時(shí),對象先轉(zhuǎn)換為字符串,然后轉(zhuǎn)換為數(shù)字,再和數(shù)字進(jìn)行比較。

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

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

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

'1' == 1 // true

5. 字符串和布爾值比較

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

'1' == true; // true

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

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

true == 1 // true

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

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

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

來看一個(gè)有趣的題

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

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

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

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

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

剛接觸到時(shí)候,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

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

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

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

基本類型:

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

”+“ 號(hào)運(yùn)算符 :

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

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

      總結(jié): 當(dāng)加號(hào)運(yùn)算符時(shí),String和其他類型時(shí),其他類型都會(huì)轉(zhuǎn)為 String;其他情況,都轉(zhuǎn)化為Number類型 , 注: undefined 轉(zhuǎn)化為Number是 為'NaN‘, 任何Number與NaN相加都為NaN。

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

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

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

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

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

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

  Object類型

當(dāng)object與基本類型運(yùn)算時(shí):

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

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

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

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

 當(dāng)對 obj,obj1 用Number()和String()換轉(zhuǎn)時(shí)

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

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

看如下情況:

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

為什么 {} + [] = 0 ?  因?yàn)?javascript在運(yùn)行時(shí), 將 第一次{} 認(rèn)為是空的代碼塊,所以就相當(dāng)于 +[] = 0.  還有 {} +5 = 5, 同理。

總結(jié):

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

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

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

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

5.檢測一些未定義的變量時(shí),應(yīng)該使用typeOf或者與undefined作比較,而不應(yīng)該直接用真值運(yùn)算。

總結(jié)

以上所述是小編給大家介紹的JavaScript中的一些隱式轉(zhuǎn)換和總結(jié)(推薦),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)的支持!


本文標(biāo)題:JavaScript中的一些隱式轉(zhuǎn)換和總結(jié)(推薦)
當(dāng)前URL:http://weahome.cn/article/jsccis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部