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

JavaScript中的操作符類型轉(zhuǎn)換示例總結(jié)

 更新時間:2016年05月30日 18:24:37   作者:Aaron  
最近發(fā)現(xiàn)在前端的面試題目中經(jīng)常出現(xiàn)操作符類型轉(zhuǎn)換的題目,于是這里來進(jìn)行一個JavaScript中的操作符類型轉(zhuǎn)換示例總結(jié),需要的朋友可以參考下

首先,我們先來做一些題目吧!為了統(tǒng)一,我不混著來寫這些題目,面試題目中,經(jīng)常將這些題目混起來,這樣對你的迷惑度會更大,為了更方便演示,我在這里分模塊寫了一些題目,大家可以看下!

操作符字符串的隱性轉(zhuǎn)換
 乘法

 console.dir("-------以下乘法---------");
 console.dir(5*"5");
 console.dir(5*"a");
 console.dir(5*NaN);
 console.dir(5*null);
 console.dir(5*undefined);
 console.dir(5*5);
 console.dir("-------以上乘法---------");

除法

 console.dir("-------以下除法---------");
 console.dir(5/"5");
 console.dir(5/"a");
 console.dir(5/NaN);
 console.dir(5/null);
 console.dir(null/5);
 console.dir(5/undefined);
 console.dir(5/5);
 console.dir(5/0);
 console.dir(0/5);
 console.dir(0/0);
 console.dir("-------以上除法---------"); 

 取余、求模

 console.dir("-------以下取余、求模--------");
 console.dir(16%"5");
 console.dir(5%"a");
 console.dir(5%NaN);
 console.dir(5%null);
 console.dir(null%5);
 console.dir(5%undefined);
 console.dir(5%5);
 console.dir(5%0);
 console.dir(0%5);
 console.dir(0%0);
 console.dir("-------以上取余、求模---------"); 

 加法

 console.dir("-------以下加法--------");
 console.dir(16+"5");
 console.dir(5+"a");
 console.dir(5+NaN);
 console.dir(5+null);
 console.dir(5+undefined);
 console.dir(5+5);
 console.dir("兩個數(shù)的和是"+5+5);
 console.dir("兩個數(shù)的和是"+(5+5));
 console.dir("-------以上加法--------"); 

 減法

 console.dir("-------以下減法--------");
 console.dir(16-"5");
 console.dir(5-"a");
 console.dir(5-NaN);
 console.dir(5-null);
 console.dir(5-undefined);
 console.dir(5-5);
 console.dir(5-true);
 console.dir(5-"true");
 console.dir(5-"");
 console.dir("兩個數(shù)的差是"+5-5);
 console.dir("兩個數(shù)的差是"+(5-5));
 console.dir("-------以上減法--------"); 

 關(guān)系操作符

 console.dir("-------以下關(guān)系操作符--------");
 console.dir(16>"5");
 console.dir("16">"5");
 console.dir(5<"a");
 console.dir(5>=NaN);
 console.dir(5<NaN);
 console.dir(NaN>=NaN);
 console.dir(5>=null);
 console.dir(5>=undefined);
 console.dir(5>=5);
 console.dir(5>=true);
 console.dir(5>="true");
 console.dir(5>="");
 console.dir("Brick">"alphabet");
 console.dir("brick">"alphabet");
 console.dir("-------以上關(guān)系操作符--------"); 

 乘法

 console.dir(5*"5"); //25
 console.dir(5*"a");//NaN
 console.dir(5*NaN);//NaN
 console.dir(5*null);0
 console.dir(5*undefined);//NaN
 console.dir(5*5);//25

下面說一下乘法隱性轉(zhuǎn)換原則:

1、如果2個數(shù)值都是數(shù)字,那么直接進(jìn)行乘法運算,(相信大家都會的,和小學(xué)數(shù)學(xué)一樣,同時要注意數(shù)字的符號),如果乘積數(shù)值超過了ECMAscript的數(shù)值表示范圍,則返回Infinity(正無窮)或者-Infinity(負(fù)無窮)
2、如果一個數(shù)是NaN,那么結(jié)果就是NaN
3、如果Infinity與0相乘,結(jié)果是NaN
4、假如一個操作符是數(shù)字,另外一個不是數(shù)值,那么先用Number()函數(shù),將其進(jìn)行轉(zhuǎn)化,將轉(zhuǎn)化出來的值與數(shù)字進(jìn)行相乘。假如轉(zhuǎn)換出來的結(jié)果出現(xiàn)NaN,那么結(jié)果就是NaN。
除法

 console.dir(5/"5");//1  將字符轉(zhuǎn)化為數(shù)字進(jìn)行相除
 console.dir(5/"a");//NaN  將“a”用Number()函數(shù)進(jìn)行轉(zhuǎn)化,出來的值是NaN,結(jié)果就是NaN
 console.dir(5/NaN);//NaN
 console.dir(5/null);//Infinity null用Number()函數(shù)進(jìn)行轉(zhuǎn)化,結(jié)果是0,那么5/0是正無窮
 console.dir(null/5);//0 同上0/5是0
 console.dir(5/undefined);//NaN  undefined 用Number()進(jìn)行轉(zhuǎn)化,結(jié)果是NaN
 console.dir(5/5);//1
 console.dir(5/0);//Infinity
 console.dir(0/5);//0
 console.dir(0/0);//NaN //0除以0結(jié)果是NaN

下面說一下除法隱性轉(zhuǎn)換原則:

和乘法類似,唯一多的一條就是0/0結(jié)果是NaN
取余、求模

求余在項目中用的最多的是求奇數(shù)偶數(shù)的時候。我們經(jīng)常用一個數(shù)值與2進(jìn)行求余,結(jié)果是0那么這個數(shù)是偶數(shù),結(jié)果是1那么這個數(shù)是奇數(shù)。

看看上面的題目:

 console.dir(16%"5"); //1 將字符串5通過Number()轉(zhuǎn)化為5然后進(jìn)行求余
 console.dir(5%"a");//NaN
 console.dir(5%NaN);//NaN
 console.dir(5%null);//NaN 將null 通過Number()轉(zhuǎn)化,結(jié)果是0,然后計算5%0 ,結(jié)果是NaN
 console.dir(null%5);//0 同上0%5 取余,結(jié)果是0
 console.dir(5%undefined);//NaN
 console.dir(5%5);//0
 console.dir(5%0);//NaN
 console.dir(0%5);//0
 console.dir(0%0);//NaN
console.dir(Infinity%Infinity);//NaN
console.dir(5%Infinity);//5
 console.dir(Infinity%5); //NaN

下面說一下取余隱性轉(zhuǎn)換原則:

和乘法一樣,我說一下比較特別的地方吧!我們都知道被除數(shù)和除數(shù)的概念吧,小學(xué)的時候就學(xué)過的。

1、被除數(shù)是無窮大,除數(shù)是有限大的值,那么結(jié)果是NaN
2、被除數(shù)是有限大的值,除數(shù)是0,那么結(jié)果是NaN
3、Infinity%Infinity結(jié)果是NaN
4、被除數(shù)是有限大的值,除數(shù)是無窮大的值,結(jié)果是被除數(shù)。
5、被除數(shù)是0,結(jié)果是0
減法

看看上面的例子吧!

 console.dir(16-"5");//11
 console.dir(5-"a");//NaN
 console.dir(5-NaN);//NaN
 console.dir(5-null);//5
 console.dir(5-undefined);//NaN
 console.dir(5-5);//0
 console.dir(5-true);//4
 console.dir(5-"true");//NaN
 console.dir(5-"");//5
 console.dir(5-Infinity);//-Infinity
 console.dir(Infinity-Infinity);//NaN
 console.dir("兩個數(shù)的差是"+5-5);//NaN
 console.dir("兩個數(shù)的差是"+(5-5));//兩個數(shù)的差是0

下面說一下減法隱性轉(zhuǎn)換原則:

和上面一樣,相同的就不說了,我說一下減法特有的。

1、Infinity-Infinity結(jié)果是NaN
2、-Infinity-Infinity結(jié)果是-Infinity
3、一個數(shù)字減Infinity結(jié)果是-Infinity
4、Infinity-(-Infinity)結(jié)果是Infinity
5、如果操作數(shù)是對象,則調(diào)用對象valueOf方法,如果結(jié)果是NaN那么結(jié)果就是NaN。如果沒有valueOf方法,那么調(diào)用toString()方法,并將得到的字符串轉(zhuǎn)換為數(shù)值。
關(guān)系操作符

關(guān)系運算符統(tǒng)一返回true或者false

 console.dir(16>"5"); //true
 console.dir("16">"5");//false
 console.dir(5<"a");//false
 console.dir(5>=NaN);//false
 console.dir(5<NaN);//false
 console.dir(NaN>=NaN);//false
 console.dir(5>=null);//true
 console.dir(5>=undefined);//false
 console.dir(5>=5);//true
 console.dir(5>=true);//true
 console.dir(5>="true");//false
 console.dir(5>="");//true 
 console.dir("Brick">"alphabet");//false B的字符串編碼值是66 ,而a的字符串編碼是97.因此false
 console.dir("brick">"alphabet");//true 小寫字母b比a大,所以是true

下面說一下關(guān)系運算符隱性轉(zhuǎn)換原則:

還是和上面一樣,相同的就不說了。

如果比較的兩個數(shù)都是字符串,那么會比較字符串對應(yīng)的字符串編碼值。

加法運算

加法運算隱性轉(zhuǎn)換,我之所以最后說,是因為加法運算隱性轉(zhuǎn)換和之前的不一樣,之前的所有的運算符號,只要一個是數(shù)字,另一個也默認(rèn)使用Number()進(jìn)行數(shù)字轉(zhuǎn)換。加法運算不一樣。加法運算只要其中一個是字符串,那么另外一個也會轉(zhuǎn)換為字符串,然后進(jìn)行字符串的拼接!

 console.dir(16+"5"); //156
 console.dir(5+"a");//5a
 console.dir(5+NaN);//NaN
 console.dir(5+null);//5
 console.dir('5'+null);//5null
 console.dir(5+undefined);//NaN
 console.dir(null+undefined);//NaN
 console.dir(5+5);//10
 console.dir("兩個數(shù)的和是"+5+5);//兩個數(shù)的和是55
 console.dir("兩個數(shù)的和是"+(5+5));//兩個數(shù)的和是10

下面說一下加法運算符隱性轉(zhuǎn)換原則:

1、有一個是字符串,那么另外一個也會轉(zhuǎn)換為字符串進(jìn)行拼接。假如一個是字符串,另外一個是null或者undefined,那么相加,null或者undefined就會調(diào)用String()方法,獲得字符串“null”或者“undefined”,然后進(jìn)行拼接。
2、假如一個數(shù)字加null或者undefined,那么還是把null或者undefined進(jìn)行Number()轉(zhuǎn)換之后再相加。
3、剩下的原則和其他的差不多,就不多說了。

雙等號隱性轉(zhuǎn)換
把以下代碼運行一遍,相信你自然就懂了~

var a;

console.dir(0 == false);//true

console.dir(1 == true);//true

console.dir(2 == {valueOf: function(){return 2}});//true

console.dir(a == NaN);//false
console.dir(NaN == NaN);//false

console.dir(8 == undefined);//false

console.dir(1 == undefined);//false

console.dir(2 == {toString: function(){return 2}});//true

console.dir(undefined == null);//true

console.dir(null == 1);//false

console.dir({ toString:function(){ return 1 } , valueOf:function(){ return [] }} == 1);//true

console.dir(1=="1");//true

console.dir(1==="1");//false

相關(guān)文章

  • 淺析javascript操作 cookie對象

    淺析javascript操作 cookie對象

    這篇文章主要簡單分析介紹了javascript操作 cookie對象的方法及示例,有需要的小伙伴參考下
    2014-12-12
  • javascript的對話框詳解與參數(shù)

    javascript的對話框詳解與參數(shù)

    javascript的對話框詳解與參數(shù)...
    2007-03-03
  • 全選復(fù)選框JavaScript編寫小結(jié)(附代碼)

    全選復(fù)選框JavaScript編寫小結(jié)(附代碼)

    這篇文章主要介紹了全選”復(fù)選框JavaScript編寫,分別附上html和js代碼以供大家更深刻了解,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • javascript this詳細(xì)介紹

    javascript this詳細(xì)介紹

    這篇文章主要介紹了javascript this詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • JS 事件綁定、事件監(jiān)聽、事件委托詳細(xì)介紹

    JS 事件綁定、事件監(jiān)聽、事件委托詳細(xì)介紹

    這篇文章主要介紹了JS 事件綁定、事件監(jiān)聽、事件委托詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • onmouseover和onmouseout的一些問題思考

    onmouseover和onmouseout的一些問題思考

    這兩個事件的觸發(fā)表現(xiàn)真的就是你想要的嗎?在IE下確實有你需要的兩個這樣事件:onmouseenter 和 onmouseleave。但很不幸FF等其他瀏覽器并不支持
    2013-08-08
  • 了解javascript中的Dom操作

    了解javascript中的Dom操作

    DOM 給我們提供了一些方法,讓我們可以使用js來控制頁面中的標(biāo)簽等。下面小編和大家來一起學(xué)習(xí)下吧
    2019-05-05
  • cancelBubble阻止事件冒泡

    cancelBubble阻止事件冒泡

    cancelBubble阻止事件冒泡...
    2006-10-10
  • 深入分析Javascript事件代理

    深入分析Javascript事件代理

    JavaScript事件是所有網(wǎng)頁互動性的根基。在傳統(tǒng)的事件處理中,事件處理器將有可能導(dǎo)致內(nèi)存泄露或者是性能下降,JavaScript事件代理則是一種簡單的技巧,通過它你可以把事件處理器添加到一個父級元素上,這樣就避免了把事件處理器添加到多個子級元素上。
    2016-01-01
  • javascript學(xué)習(xí)指南之回調(diào)問題

    javascript學(xué)習(xí)指南之回調(diào)問題

    回調(diào)函數(shù)被認(rèn)為是一種高級函數(shù),一種被作為參數(shù)傳遞給另一個函數(shù)(在這稱作"otherFunction")的高級函數(shù),回調(diào)函數(shù)會在otherFunction內(nèi)被調(diào)用(或執(zhí)行)?;卣{(diào)函數(shù)的本質(zhì)是一種模式(一種解決常見問題的模式),因此回調(diào)函數(shù)也被稱為回調(diào)模式。
    2016-04-04

最新評論

金平| 泸水县| 柳河县| 成都市| 仁寿县| 东安县| 莒南县| 芮城县| 民乐县| 沈丘县| 如皋市| 呼图壁县| 棋牌| 雅江县| 霍邱县| 东丽区| 江达县| 汉寿县| 尉犁县| 安吉县| 永胜县| 额尔古纳市| 崇明县| 德钦县| 台东县| 青州市| 疏勒县| 昔阳县| 石狮市| 毕节市| 松桃| 梅河口市| 康乐县| 扎鲁特旗| 阜阳市| 湛江市| 保靖县| 芒康县| 琼结县| 渝中区| 汨罗市|