亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

詳解js運(yùn)算符

Dean / 846人閱讀

摘要:對(duì)象返回第二個(gè)操作數(shù)對(duì)象對(duì)象邏輯或與邏輯與操作相似,如果有一個(gè)操作數(shù)不是布爾值,邏輯或也不一定返回布爾值此時(shí),它遵循下列規(guī)則如果第一個(gè)操作數(shù)是對(duì)象,則返回第一個(gè)操作數(shù)。無(wú)論這個(gè)值是什么數(shù)據(jù)類(lèi)型,這個(gè)運(yùn)算符都會(huì)返回一個(gè)布爾值。

加法運(yùn)算符

如果算術(shù)運(yùn)算的值不是數(shù)值,那么js后臺(tái)會(huì)先使用Number()轉(zhuǎn)型函數(shù)將其轉(zhuǎn)換為數(shù)值:

var num = 1 + NaN;//NaN,只要有一個(gè)NaNny就為NaN
var num = 10 + "10";//1010,"+"為字符串連接符,有字符串就不是加法
var box = "你的歲數(shù)是:"+10+10;//你的歲數(shù)是:1010,被轉(zhuǎn)換成字符串
var box = "你的歲數(shù)是"+(10+10);//你的歲數(shù)是:20,沒(méi)有被轉(zhuǎn)換成字符串
var box = 10+10+"是你的歲數(shù)";//20是你的歲數(shù),沒(méi)有被轉(zhuǎn)換成字符串
邏輯操作符 邏輯與(&&)
第一個(gè)操作數(shù) 第二個(gè)操作數(shù) 結(jié)果
true true true
true false false
false true false
false false false

如果兩邊的操作數(shù)有一個(gè)操作數(shù)不是布爾值的情況下,與運(yùn)算符就不一定返回布爾值,此時(shí),遵循以下規(guī)則:

 1. 第一個(gè)操作數(shù)是對(duì)象,則返回第二個(gè)操作數(shù)
 2. 第二個(gè)操作數(shù)是對(duì)象,則第一個(gè)操作數(shù)返回true,才返回第二個(gè)操作數(shù),否則返回false;
 3. 有一個(gè)操作數(shù)是null,則返回null;
 4. 有一個(gè)操作數(shù)是undefined,則返回undefined。
 
var box = 對(duì)象 && (5>4);//true,返回第二個(gè)操作數(shù)
var box = (5>4)&&對(duì)象;//[object Object]
var box = (3>4)&&對(duì)象;//false
var box = (5>4)&&null;//null
邏輯或(||)
var result = true || false;

與邏輯與操作相似,如果有一個(gè)操作數(shù)不是布爾值,邏輯或也不一定返回布爾值;此時(shí),它遵循下列規(guī)則:

□ 如果第一個(gè)操作數(shù)是對(duì)象,則返回第一個(gè)操作數(shù)。

□ 如果第一個(gè)操作數(shù)求值為false,則返回第二個(gè)操作數(shù)。

□ 如果兩個(gè)操作數(shù)都是對(duì)象,則返回第一個(gè)操作數(shù)。

□ 如果兩個(gè)操作數(shù)都是null,返回null

□ 如果兩都為`undefined`,返`undefined`。

□ 如果兩都為`NaN`,返`NaN`

var box = 對(duì)象||(5>3);//[object Object]
var box = (5>3)||對(duì)象;//true
var box = 對(duì)象1 || 對(duì)象2;//[object Object]
var box = null || null;//null
var box = NaN || NaN;//NaN
var box = undefined || undefined;//undefined

邏輯非

邏輯非運(yùn)算符可以用于任何值。無(wú)論這個(gè)值是什么數(shù)據(jù)類(lèi)型,這個(gè)運(yùn)算符都會(huì)返回一個(gè)布爾值。它會(huì)先將這個(gè)值轉(zhuǎn)換成布爾值,然后取反,規(guī)則如下:

 1. 操作數(shù)是一個(gè)對(duì)象,返回false
 2. 操作數(shù)是一個(gè)空字符串,返回true
 3. 操作數(shù)是一個(gè)非空字符串,返回false
 4. 操作數(shù)是數(shù)值0,返回true
 5. 操作數(shù)是任意非0數(shù)值(包括Infinity),false
 6. 操作數(shù)是null,返回true
 7. 操作數(shù)是NaN,返回true
 8. 操作數(shù)是undefined,返回true
 
var box = !{};//false
var box = !"trigkit";//false
var box = !0;//true
var box = !null;//true
var box = !NaN;//true
var box = !8;//false

對(duì)于雙感嘆號(hào)!!的寫(xiě)法其實(shí)是Boolean()的簡(jiǎn)寫(xiě)法。比如下面是來(lái)自underscore.js的一段源碼:

// Is a given value a DOM element?
    _.isElement = function(obj) {
        return !!(obj && obj.nodeType === 1);
    };

返回的值就是布爾值

關(guān)系運(yùn)算符
1.兩個(gè)操作數(shù)都是數(shù)值,則進(jìn)行數(shù)值比較
2.兩個(gè)操作數(shù)都是字符串,則比較兩個(gè)字符串對(duì)應(yīng)的字符編碼值
3.兩個(gè)操作數(shù)有一個(gè)是數(shù)值,則將另一個(gè)轉(zhuǎn)換為數(shù)值,再進(jìn)行數(shù)值比較
4.兩個(gè)操作數(shù)有一個(gè)是對(duì)象,則先調(diào)用valueOf()方法或toString()方法,再用結(jié)果比較

var num = "3">22;//false
var num = "3">"22";//true,進(jìn)行第一個(gè)數(shù)字的比較3>2,所以是true
var num = "a">"b";//false,a=97,b=98,ASCII表
var num = "a">"B";//true,B=66
相等操作符

相等操作符會(huì)對(duì)操作值進(jìn)行隱式轉(zhuǎn)換后進(jìn)行比較:

1.如果一個(gè)操作值為布爾值,則在比較之前先將其轉(zhuǎn)換為數(shù)值,false轉(zhuǎn)成0,true為1;
2.如果一個(gè)操作值為字符串,另一個(gè)操作值為數(shù)值,則通過(guò)Number()函數(shù)將字符串轉(zhuǎn)換為數(shù)值
3.如果一個(gè)操作值是對(duì)象,另一個(gè)不是,則調(diào)用對(duì)象的valueOf()方法,得到的結(jié)果按照前面的規(guī)則進(jìn)行比較
4.null與undefined是相等的
5.如果一個(gè)操作值為NaN,則相等比較返回false
6.如果兩個(gè)操作值都是對(duì)象,則比較它們是不是指向同一個(gè)對(duì)象。如果兩個(gè)操作數(shù)都指向同一個(gè)對(duì)象,則相等操作符返回true,否則,返回false
7.在全等和不全等的判斷上,只有值和類(lèi)型都相等,才返回true,否則返回false;

看下面的實(shí)例:

var num =2==2;//true
var num = "2"==2;//true,"2"會(huì)轉(zhuǎn)成數(shù)值2
var num = false ==0;//true,false轉(zhuǎn)成數(shù)值就是0
var num = "a"=="A";//false,轉(zhuǎn)換后的編碼不一樣
var num = 2==NaN;//false,只要有NaN,都是false
var num = {}=={};//false,比較的是他們的地址,每個(gè)新創(chuàng)建對(duì)象的引用地址都不同

var age = {};
var height = age;
var box = age == height;//true,引用地址一樣,所以相等


思維導(dǎo)圖

分享一張網(wǎng)上找的思維導(dǎo)圖:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/87667.html

相關(guān)文章

  • js中的|與 && 運(yùn)算符詳解

    摘要:這個(gè)時(shí)候我就有點(diǎn)犯迷糊了,為什么邏輯運(yùn)算符能這么用呢由于是出身,所以對(duì)這樣用感覺(jué)很奇怪。 這篇文章主要介紹了js中的 || 與 && 運(yùn)算符詳解,需要的朋友可以參考下 一 js中邏輯運(yùn)算符在開(kāi)發(fā)中可以算是比較常見(jiàn)的運(yùn)算符了,主要有三種:邏輯與&&、邏輯或||和邏輯非!。 當(dāng)&&和|| 連接語(yǔ)句時(shí),兩邊的語(yǔ)句會(huì)轉(zhuǎn)化為布爾類(lèi)型(Boolean),然后再進(jìn)行運(yùn)算,具體的運(yùn)算規(guī)則如下: 兩邊條...

    baoxl 評(píng)論0 收藏0
  • js中的|與 && 運(yùn)算符詳解

    摘要:這個(gè)時(shí)候我就有點(diǎn)犯迷糊了,為什么邏輯運(yùn)算符能這么用呢由于是出身,所以對(duì)這樣用感覺(jué)很奇怪。 這篇文章主要介紹了js中的 || 與 && 運(yùn)算符詳解,需要的朋友可以參考下 一 js中邏輯運(yùn)算符在開(kāi)發(fā)中可以算是比較常見(jiàn)的運(yùn)算符了,主要有三種:邏輯與&&、邏輯或||和邏輯非!。 當(dāng)&&和|| 連接語(yǔ)句時(shí),兩邊的語(yǔ)句會(huì)轉(zhuǎn)化為布爾類(lèi)型(Boolean),然后再進(jìn)行運(yùn)算,具體的運(yùn)算規(guī)則如下: 兩邊條...

    jsyzchen 評(píng)論0 收藏0
  • 溫故js系列(17)-詳解加法運(yùn)算符

    摘要:數(shù)字和解釋因?yàn)闆](méi)有任何一個(gè)操作數(shù)是字符串,將轉(zhuǎn)換為一個(gè)數(shù)字做數(shù)字加法運(yùn)算因?yàn)闆](méi)有操作數(shù)是對(duì)象或字符串,將轉(zhuǎn)換為。結(jié)論以避免潛在的問(wèn)題,不使用加法運(yùn)算符處理對(duì)象,除非你清楚地使用或方法。 前端學(xué)習(xí):教程&模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試資源匯總 JavaScript一路走來(lái),備受爭(zhēng)議,與其說(shuō)它備受爭(zhēng)議,不如說(shuō)它不夠完美。不夠完美?那完美了還得了,它的...

    gxyz 評(píng)論0 收藏0
  • 【連載】前端個(gè)人文章整理-從基礎(chǔ)到入門(mén)

    摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...

    madthumb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<