運(yùn)算符

數(shù)據(jù)的運(yùn)算:

說(shuō)直白點(diǎn):就是利用數(shù)學(xué)的運(yùn)算方式來(lái)對(duì)我們變量中存儲(chǔ)的數(shù)據(jù)進(jìn)行:計(jì)算,對(duì)比,條件設(shè)置,賦值等處理

運(yùn)算所使用的符號(hào)叫做運(yùn)算符:

運(yùn)算符分為:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,邏輯運(yùn)算符,賦值運(yùn)算符,三目運(yùn)算;

算術(shù)運(yùn)算符:

加號(hào):+:當(dāng)+號(hào)在運(yùn)算中遇到字符串,加號(hào)變成拼接符,所有數(shù)據(jù)類型都變成字符串;當(dāng)布爾值參與數(shù)字相加的時(shí)候,布爾值自動(dòng)轉(zhuǎn)化為數(shù)字,true=1;false=0;

var a=10;

var b="12";

var c=a+b;

console.log(c)//1012

console.log(typeof(c))//string

var a=true;

var b=false;

var c=a+b//1,數(shù)據(jù)類型:number。

減號(hào):-;當(dāng)數(shù)字與數(shù)字類型的字符串進(jìn)行減法運(yùn)算的時(shí)候,計(jì)算機(jī)先強(qiáng)制將數(shù)字類型字符串轉(zhuǎn)變位數(shù)字在參與計(jì)算。得到結(jié)果是一個(gè)number類型。

var a=10;

var b="12";

var c=a-b;

console.log(c)//-2

console.log(typeof(c))//number

var a=10;

var b="12a";

var c=a-b;

console.log(c);//NaN

console.log(typeof(c));//number

所有的數(shù)據(jù)類型在參與減法運(yùn)算中,都會(huì)被強(qiáng)制轉(zhuǎn)化為數(shù)字,在參與計(jì)算。當(dāng)非數(shù)字字符串參與減法運(yùn)算,結(jié)果出現(xiàn)NaN。

乘號(hào):*

一切乘法運(yùn)算中,先把數(shù)據(jù)類型轉(zhuǎn)化為數(shù)字,然后相乘。當(dāng)非數(shù)字字符串參與乘法運(yùn)算得到NaN結(jié)果。

當(dāng)我們遇到NaN數(shù)據(jù)的時(shí)候,我們不能直接使用typeof()進(jìn)行判斷,而是需要isNaN()進(jìn)行判斷,判斷的結(jié)果是:TRUE或者FALSE

在我們做算術(shù)運(yùn)算中,如果出現(xiàn)小數(shù)的加減乘除運(yùn)算的時(shí)候,出現(xiàn)小數(shù)點(diǎn)后的取值出現(xiàn)誤差,這樣的誤差叫做舍入誤差。

解決方案:c.toFixed(2);意思是將變量c的結(jié)果取小數(shù)點(diǎn)后兩位數(shù),并且自動(dòng)四舍五入。

例如:var c=1.2-0.5;//0.7000000001;c.toFixed(2)//0.70;

除法:/,所有的數(shù)據(jù)先轉(zhuǎn)化為數(shù)字類型,然后參與相除,1除以0//infinity,無(wú)窮大。、

求模運(yùn)算:a%b

var a=123;

var b=10;

var c=a%b;

c的結(jié)果是123除以10之后所剩余的量。結(jié)果為3.所以求模運(yùn)算就是一種取除法中的余數(shù)運(yùn)算。

自增運(yùn)算:

var a=10;

console.log(a+a++);

a++在運(yùn)算中先參與運(yùn)算在第二步運(yùn)算的時(shí)候才開始加1;

a + a++=10+10=20//這個(gè)時(shí)候的a++必須等待第三個(gè)a出來(lái)才會(huì)讓第三個(gè)a+1;

a++ +a =10+11=21//此時(shí)a++參與第一步運(yùn)算,遇到第二a,所以他將加1之后的值賦給了第二個(gè)a.

練習(xí)作業(yè):

var a=2;

var b=3;

a+b++ +a++ +b=?

在自增運(yùn)算中,n++和++n的區(qū)別是什么?

n++是先運(yùn)算后自加,只有公式中出現(xiàn)第二個(gè)n才會(huì)講增加的1賦值給第二個(gè)n上。

++n是先自加后運(yùn)算。

在不參與運(yùn)算的情況下,n++,與++n的值是一樣的。

計(jì)算機(jī)的計(jì)算順序:1,先算括號(hào)內(nèi),2,再算乘除,3,算加減

var a=1;

var b=2;

var c=3;

(a++*++a -++b)/++c=?

關(guān)系運(yùn)算符:

其實(shí)就是求幾個(gè)數(shù)據(jù)之間的大小關(guān)系。

有大于>,

小于<

大于等于>=

小于等于<=

==等于

===絕對(duì)等于

!=不等于;

關(guān)系運(yùn)算結(jié)果返回的是一個(gè)boolean值,只有true或者false;

面試題:==和===的區(qū)別。

==是先進(jìn)行數(shù)據(jù)類型轉(zhuǎn)化,然后再比較是否相等。

===是不進(jìn)行數(shù)據(jù)類型轉(zhuǎn)化,直接比較,更加嚴(yán)格一些、

在關(guān)系運(yùn)算中,一切數(shù)據(jù)類型遇到數(shù)字,都先轉(zhuǎn)化為數(shù)字再對(duì)比。如果無(wú)法轉(zhuǎn)化為數(shù)字,就會(huì)出現(xiàn)false結(jié)果

再字符串的關(guān)系對(duì)比中,按照大小順序是根據(jù)Unicode編碼順序來(lái)進(jìn)行的。

A-Z之間的Unicode編碼順序:65-90;

a-z之間的unciode編碼順序:97-122;

0-9之間的順序:48-57;

漢字的Unicode編碼順序:u4e00-9fa05

邏輯運(yùn)算:

其實(shí)就是設(shè)置運(yùn)算的條件,有“與”“或”“非”三種

var a=prompt("請(qǐng)輸入數(shù)字")

if(!(a>70)){//邏輯非運(yùn)算,凡是小于等于70才成立

alert("你好");

}

if(a>70||a>90){//邏輯或運(yùn)算,多個(gè)條件滿足其一即可

alert("你好");

}

if(a>70&&a<90){//邏輯與運(yùn)算。多個(gè)條件必須同時(shí)滿足才行。

alert("你好");

}

賦值符運(yùn)算:

賦值運(yùn)算 =? +=? -=? *=? /=? %=

等號(hào):將等號(hào)右側(cè)的內(nèi)容賦值給左側(cè)的名字。

+=:str+=5;str=str+5 //此時(shí)返回的結(jié)果是11

面試題:

var str="hello";

var str=str+"world";

創(chuàng)建了幾個(gè)變量?標(biāo)準(zhǔn)答案:3個(gè);

解析過(guò)程:因?yàn)樽址兞恳坏﹦?chuàng)建,空間不可改變,所以為了容納helloworld,我們必須創(chuàng)建一個(gè)新變量他的值就是helloworld。加上之前的hello變量和world變量,總共是3個(gè)。

條件三目運(yùn)算:

其實(shí)就是一個(gè)條件判斷運(yùn)算。

其中語(yǔ)法包含:條件?“條件成立執(zhí)行的結(jié)果”:“條件不成立執(zhí)行的結(jié)果”

數(shù)據(jù)類型的轉(zhuǎn)化:

隱式轉(zhuǎn)化:

在數(shù)據(jù)運(yùn)算中,js程序自動(dòng)根據(jù)運(yùn)算的環(huán)境,對(duì)數(shù)據(jù)類型進(jìn)行自動(dòng)轉(zhuǎn)化,例如在加運(yùn)算中,所有數(shù)據(jù)遇到字符串,都會(huì)變成字符串,在關(guān)系運(yùn)算中,

所有數(shù)據(jù)遇到number都會(huì)轉(zhuǎn)變成number類型。這樣的轉(zhuǎn)化被稱為隱式轉(zhuǎn)化。

隱式轉(zhuǎn)化:會(huì)自動(dòng)根據(jù)環(huán)境進(jìn)行轉(zhuǎn)化,不需要人工操作,缺點(diǎn):轉(zhuǎn)化不可控

為了能夠讓數(shù)據(jù)的使用可控,我們需要能夠?qū)?shù)據(jù)轉(zhuǎn)化人為可控制。

這種需要人為轉(zhuǎn)化的:我們稱為顯式轉(zhuǎn)化或者強(qiáng)制轉(zhuǎn)化。

強(qiáng)制轉(zhuǎn)化就需要我們使用相應(yīng)的數(shù)據(jù)類型轉(zhuǎn)化的方法;

1,所有數(shù)據(jù)變成string類型:

方法1,String(“內(nèi)容”);常用

方法2,x.toString();

2, 所有數(shù)據(jù)轉(zhuǎn)化為number類型:

方法1:Number(x);

//將所有數(shù)據(jù)轉(zhuǎn)化為number類型,如果遇到非數(shù)字類型轉(zhuǎn)化結(jié)果為:NaN;帶有小數(shù)點(diǎn)的數(shù)字內(nèi)容直接轉(zhuǎn)化為小數(shù)。

方法2:parseInt(x);將所有數(shù)據(jù)轉(zhuǎn)化為整數(shù)。遇到數(shù)字在前,文字內(nèi)容在后的,該方法直接讀取能夠讀到的數(shù)字部分轉(zhuǎn)化為整數(shù)。,小數(shù)只顯示整數(shù)部分

方法3:parseFloat(x);將所有數(shù)據(jù)讀取出來(lái),如果有小數(shù)將顯示小數(shù)內(nèi)容。

總結(jié):parseInt(),parseFloat(),只是將字符串string轉(zhuǎn)化為數(shù)字類型number,所以在上述兩種方法中。圓括號(hào)內(nèi)如果直接寫內(nèi)容就必須加雙/單引號(hào)。

練習(xí):做一個(gè)超市的收銀程序:

1,工作流程:

3,Boolean(x)//將所有數(shù)據(jù)類型轉(zhuǎn)化為布爾值。除了,null,undefined,""空字符,0,false這些返回結(jié)果是false之外,其他都是返回true。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容