摘要:代碼示例等號檢查,類型轉(zhuǎn)換后返回全等檢查,由于時(shí)類型,時(shí)類型,類型不同,返回關(guān)系運(yùn)算符關(guān)系運(yùn)算符執(zhí)行的是比較運(yùn)算,通常用于判斷兩個(gè)變量哪個(gè)大哪個(gè)小關(guān)系運(yùn)算符都返回一個(gè)布爾值。邏輯或運(yùn)輸符用雙豎線表示。
1.運(yùn)算符
JavaScript中常見的運(yùn)算符包含:賦值運(yùn)算符、算數(shù)運(yùn)算符、等性運(yùn)算符、關(guān)系運(yùn)算符、條件運(yùn)算符、布爾運(yùn)算符、邏輯運(yùn)算符……
1.賦值運(yùn)算符 =賦值運(yùn)算符“=”,用于給某個(gè)變量賦值。
代碼示例:
var x; x=5; //把數(shù)字 5 賦值給變量x x="hello"; //把字符串 hello 賦值給x
除了簡單的賦值運(yùn)算符“=”之外,還有一種常用的復(fù)合賦值運(yùn)算符
1.1 加法/賦值運(yùn)算符 +=加法賦值運(yùn)算符x+=y,等價(jià)于x=x+y,它是一種簡寫形式。
代碼示例:
var x=5; x+=1; //等價(jià)于 x=x+1; console.log(x); //61.2 減法/賦值運(yùn)算符 -=
減法賦值運(yùn)算符x-=y,等價(jià)于x=x-y,它是一種簡寫形式。
代碼示例:
var x=5; x-=1; //等價(jià)于 x=x-1; console.log(x); //42.算數(shù)運(yùn)算符
JavaScript中的算數(shù)運(yùn)算符主要用在數(shù)字類型變量的數(shù)學(xué)運(yùn)算,包含加法、減法、乘法、除法、取余等等。
代碼示例:
var x=5,y=2; console.log(x+y); //加法運(yùn)算,結(jié)果:7 console.log(x-y); //減法運(yùn)算,結(jié)果:3 console.log(x*y); //乘法運(yùn)算,結(jié)果:10 console.log(x/z); //除法運(yùn)算,結(jié)果:2.5 console.log(x%y); //取余運(yùn)算,結(jié)果:1, 5除以2,商為2,余數(shù)為13.等性運(yùn)算符
等性運(yùn)算符主要用于判斷兩個(gè)變量的值和類型是否相等。判斷返回的結(jié)果為一個(gè)布爾值。
3.1等號和非等號在JavaScript中等號由雙等號(==)表示,當(dāng)雙等號兩邊運(yùn)算數(shù)相等時(shí),返回結(jié)果為true。
代碼示例:
var x=5,y=5,z=9; console.log(x==y); //true console.log(x==z); //false
非等號由感嘆號加等號(!=)表示,當(dāng)非等號兩邊的運(yùn)算數(shù)不相等時(shí),返回結(jié)果為true。
代碼示例:
var x=5,y=5,z=9; console.log(x!=y); //false console.log(x!=z); //true
注意:在比較兩個(gè)運(yùn)算數(shù)是否相等時(shí),JavaScript引擎會將這兩個(gè)運(yùn)算數(shù)進(jìn)行類型轉(zhuǎn)換
執(zhí)行類型轉(zhuǎn)換的規(guī)則如下:
布爾值轉(zhuǎn)換成數(shù)字:false轉(zhuǎn)換成0,true轉(zhuǎn)換成1.
數(shù)字與字符串:字符串轉(zhuǎn)換成數(shù)字。
對象與字符串:把對象轉(zhuǎn)換成字符串。
對象與數(shù)組:把對象轉(zhuǎn)換成數(shù)組。
在比較時(shí),對于一些特殊的運(yùn)算數(shù),遵守以下規(guī)則:
null和undefined相等。
不能把null和undefined轉(zhuǎn)換成其他值。
只要有一個(gè)運(yùn)算數(shù)是NaN,等號返回false,非等號返回true。
如果兩個(gè)運(yùn)算數(shù)都是對象,比較的是他們的引用值。
如果兩個(gè)運(yùn)算數(shù)指向同一對象,等號返回true。
即使兩個(gè)數(shù)都是NaN,等號仍然返回false。
特殊的情況:
表達(dá)式 | 返回值 |
---|---|
null == undefined | true |
"NaN" == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN !=NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undefined == 0 | false |
null == 0 | false |
"5" == 5 | true |
全等號和非全等號所做的事與等號和非等號相同,只是在檢查相等性前,不執(zhí)行類型轉(zhuǎn)換
全等號由三個(gè)等號表示(===),檢查時(shí)不僅要值相等,更要類型相等。
代碼示例:
var x=5; var y="5"; console.log(x==y); //等號檢查,類型轉(zhuǎn)換后返回 true console.log(x===y); //全等檢查,由于x時(shí)number類型,y時(shí)string類型,類型不同,返回false4.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符執(zhí)行的是比較運(yùn)算,通常用于判斷兩個(gè)變量哪個(gè)大?哪個(gè)小?關(guān)系運(yùn)算符都返回一個(gè)布爾值。
常用的關(guān)系運(yùn)算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
代碼示例:
var x=5,y=3,z=5; console.log(x>y); //true console.log(x4.1字符串與字符串之間的關(guān)系比較=z); //true console.log(x<=z); //true
對于數(shù)字類型的變量關(guān)系比較我們遵循數(shù)學(xué)原則,但是對于字符串類型的變量,如去要進(jìn)行關(guān)系比較則需按照ASCII碼;
ASCII碼對照表見下圖:
代碼示例:
var x="Hello",x="world"; console.log(x>y); //false
如上述代碼所示,如果我們要比較Hello和world這兩個(gè)字符串,首先比較首字符的大小,對照ASCII字符編碼表,H的十進(jìn)制編碼為72,w的十進(jìn)制編碼為119,所以變量x應(yīng)該是小于變量y,故而上面代碼返回結(jié)果為false。
4.2數(shù)字與字符串之間的關(guān)系比較當(dāng)一個(gè)字符串與數(shù)字進(jìn)行關(guān)系比較時(shí),JavaScript引擎會將字符串轉(zhuǎn)換成數(shù)字,然后按照數(shù)字順序比較它們。
代碼示例:
var x="30",y=5; console(x>y); //true
在上述示例代碼中,字符串"30"將被轉(zhuǎn)換成數(shù)字30,然后與數(shù)字5進(jìn)行比較。
但是,如果字符串不能轉(zhuǎn)換成數(shù)字又該如何呢?
var x="hello",y=9; console.log(x>y); //false
字符串"hello"不能轉(zhuǎn)換成有意義的數(shù)字,所以在類型轉(zhuǎn)換的時(shí)候返回的是NaN。
==任何包含NaN的關(guān)系運(yùn)算都要返回false==,因此上述代碼也輸出false。
條件運(yùn)算符又稱為三元運(yùn)算符,它在JavaScript中是一個(gè)既有比較又有賦值的運(yùn)算符。語法如下:
var x=booleanExpressin ? trueValue : falseValue;
該運(yùn)算符的意思是:根據(jù)booleanExpressin條件表達(dá)式的計(jì)算結(jié)果,如果條件表達(dá)式返回的結(jié)果為true,則把trueValue賦值給x,如果條件表達(dá)式返回的結(jié)果為false,則把falseValue賦值給變量。
代碼示例:
var x=5,y=10; var z=(x>y)?x:y; console.log(z); //106.邏輯運(yùn)算符
JavaScript中的邏輯運(yùn)算符有三種:NOT(取反)、AND(邏輯與)和OR(邏輯或)
在進(jìn)行邏輯運(yùn)算之前,JavaScript會將變量轉(zhuǎn)換成布爾類型。因此我們需要了解一下不同類型的變量轉(zhuǎn)換為布爾類型時(shí)的邏輯值:
參數(shù) | 說明 | 轉(zhuǎn)換結(jié)果 |
---|---|---|
"" | 空字符串 | false |
"hello" | 非空字符串 | true |
" " | 空格 | true |
0 | 數(shù)字0 | false |
5.5 | 非零正數(shù) | true |
-4 | 非零負(fù)數(shù) | true |
null | false | |
NaN | false | |
undefined | false | |
Object | 對象 | true |
Array | 數(shù)組 | true |
邏輯 NOT 取反運(yùn)算符,意思是得到與當(dāng)前參數(shù)相反的結(jié)果,由感嘆號(!)表示,取反運(yùn)算符返回的一定是布爾值。
注意:如果運(yùn)算數(shù)是undefined,發(fā)生錯(cuò)誤。
代碼示例:
var bFalse = false; var sRed = "red"; var iZero = 0; var iThreeFourFive = 345; var oObject = new Object(); console.log(!bFalse); //true console.log(!sRed); //false console.log(!iZero); //true console.log(!iThreeFourFive); //false console.log(!oObject); //false6.2 AND 邏輯與
邏輯與AND運(yùn)算符,進(jìn)行運(yùn)算時(shí)需要兩個(gè)參數(shù),只有當(dāng)兩個(gè)參數(shù)轉(zhuǎn)換都為true時(shí),邏輯與才返回true。邏輯與AND運(yùn)輸符用雙和號(&&)表示。
代碼示例:
var x=true,y=false; console.log(x&&y); //false
注意:邏輯與AND運(yùn)算的運(yùn)算數(shù)可以是任何類型的,如果某個(gè)運(yùn)算數(shù)不是原始的布爾類型,邏輯與AND運(yùn)算不一定返回布爾值:
如果一個(gè)運(yùn)算數(shù)是對象,另一個(gè)是 Boolean 值,返回該對象。
如果兩個(gè)運(yùn)算數(shù)都是對象,返回第二個(gè)對象。
如果某個(gè)運(yùn)算數(shù)是 null,返回 null。
如果某個(gè)運(yùn)算數(shù)是 NaN,返回 NaN。
如果某個(gè)運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤。
6.3 OR 邏輯或邏輯或OR運(yùn)算符,進(jìn)行運(yùn)算時(shí)需要兩個(gè)參數(shù),只要當(dāng)兩個(gè)參數(shù)中其中一個(gè)為true時(shí),邏輯與返回true。邏輯或OR運(yùn)輸符用雙豎線(||)表示。
代碼示例:
var x=true,y=false; console.log(x||y); //true
注意:邏輯或 OR 與邏輯與 AND 運(yùn)算符相似,如果某個(gè)運(yùn)算數(shù)不是 Boolean 值,邏輯 OR 運(yùn)算并不一定返回 Boolean 值:
如果一個(gè)運(yùn)算數(shù)是對象,并且該對象左邊的運(yùn)算數(shù)值均為 false,則返回該對象。
如果兩個(gè)運(yùn)算數(shù)都是對象,返回第一個(gè)對象。
如果最后一個(gè)運(yùn)算數(shù)是 null,并且其他運(yùn)算數(shù)值均為 false,則返回 null。
如果最后一個(gè)運(yùn)算數(shù)是 NaN,并且其他運(yùn)算數(shù)值均為 false,則返回 NaN。
如果某個(gè)運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96255.html
摘要:個(gè)人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:四這個(gè)題目比較簡單即函數(shù)聲明和變量聲明的關(guān)系和影響,遇到同名的函數(shù)聲明,不會重新定義五關(guān)于這個(gè)題目,的規(guī)范有解釋的。屬性的值是對象關(guān)于對象的具體定義,看這里對象六這個(gè)題目可以說是最簡單的,也是最詭異的關(guān)于這個(gè)題目,我們先來了解個(gè)概念。 廢話不多說,直接看題目,先不要急著看答案 先自己思考,收獲更多 (長期補(bǔ)倉); 一 var out = 25, inner = { ...
摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對方法,包括,,。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸耍虼宋闹兄豢炊?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...
摘要:顯示的調(diào)用轉(zhuǎn)換過程稱為顯式強(qiáng)制類型轉(zhuǎn)換,隱式的情況稱為隱式強(qiáng)制類型轉(zhuǎn)換。隱式強(qiáng)制類型轉(zhuǎn)換讓代碼變得晦澀難懂而又便捷而奇妙。事實(shí)上,允許在比較中進(jìn)行強(qiáng)制類型轉(zhuǎn)換,而不允許。如果有并且返回基本類型值,就使用該值進(jìn)行強(qiáng)制類型轉(zhuǎn)換。 JavaScript是一種非常靈活的現(xiàn)代編程語言,靈活到使用者極其容易被忽視的它那廣闊的世界以及它帶給我們的無限遐想空間。本文將對JavaScript最最基礎(chǔ)也最...
閱讀 3734·2021-10-15 09:42
閱讀 2594·2021-09-03 10:50
閱讀 1628·2021-09-03 10:28
閱讀 1788·2019-08-30 15:54
閱讀 2510·2019-08-30 12:46
閱讀 401·2019-08-30 11:06
閱讀 2818·2019-08-30 10:54
閱讀 521·2019-08-29 12:59