技術(shù)交流QQ群:1027579432掉瞳,歡迎你的加入!
歡迎關(guān)注我的微信公眾號:CurryCoder的程序人生
1.運算符
- 運算符也稱為操作符浪漠,是用于實現(xiàn)賦值陕习、比較和執(zhí)行算術(shù)運算等功能的符號。
- JavaScript中常用的運算符有:
- 算術(shù)運算符
- 遞增和遞減運算符
- 比較運算符
- 邏輯運算符
- 賦值運算符
2.算術(shù)運算符
-
概念:算術(shù)運算使用的符號址愿,用于執(zhí)行兩個變量或值的算術(shù)運算该镣。
- 浮點數(shù)存在的精度問題:浮點數(shù)值的最高精度是17位小數(shù),但在進(jìn)行算術(shù)運算時响谓,其精度遠(yuǎn)遠(yuǎn)不如整數(shù)损合。
-
不要直接判斷兩個浮點數(shù)是否相等!
console.log(1 + 1); console.log(1 - 1); console.log(1 * 1); console.log(1 / 1); // 1. % 取余運算符(取模) console.log(4 % 2); // 0 console.log(5 % 3); // 2 console.log(3 % 5); // 3 // 2. 浮點數(shù) 復(fù)數(shù)運算里面會有問題 console.log(0.1 + 0.2); // 0.30000000000000004 console.log(0.07 * 100); // 7.000000000000001 // 3. 不能直接對浮點數(shù)進(jìn)行相比較娘纷, var num = 0.1 + 0.2; console.log(num === 0.3); // false
-
怎么判斷一個數(shù)能否被整除嫁审?
- 該數(shù)的余數(shù)是0就說明這個數(shù)能被整除,即取余運算符%的主要用途赖晶。
-
表達(dá)式和返回值
- 表達(dá)式:是由數(shù)字律适、運算符、變量等以能求得數(shù)值的有意義排列方法所得的組合遏插;簡單理解:是由數(shù)字捂贿、運算符、變量等組成的式子胳嘲。
// 表達(dá)式:由數(shù)字眷蜓、運算符、變量等組成的式子胎围,稱為表達(dá)式 console.log(1 + 1); // 2就是返回值 // 在程序中吁系,2 = 1 + 1德召,將右邊的表達(dá)式計算完畢,把返回值給左邊 var num = 1 + 1;
3. 遞增和遞減運算符
- 如果需要反復(fù)給數(shù)字變量添加或減去1汽纤,可以使用遞增++和遞減--運算符來完成上岗。
- 在JavaScript中,遞增++和遞減--運算符既可以放在變量前面蕴坪,也可以放在變量后面肴掷。放在變量前面時,稱為前置遞增(遞減)運算符背传;放在變量后面時呆瞻,稱為后置遞增(遞減)運算符。
- 遞增和遞減運算符都必須和變量搭配使用径玖!
3.1 前置遞增運算符
- ++num前置遞增痴脾,就是自加1,類似于num = num + 1梳星,但是++num寫起來更簡單赞赖。
- 使用口訣:先自加,后返回值冤灾。
// 1.想要一個變量自己加1, num = num + 1比較麻煩 var num = 1; num = num + 1; // ++num num = num + 1; console.log(num); // 3 // 2.前置遞增運算符前域, ++寫在變量的前面 var age = 18; ++age; // 類似于 age = age + 1; console.log(age); // 3.先加1,后返回值 var p = 10; console.log(++p + 10); // 21
3.2 后置遞增運算符
- num++后置遞增韵吨,就是自加1匿垄,類似于num = num + 1,但是num++寫起來更簡單归粉。
- 使用口訣:先返回原值椿疗,后自加。
// 后置遞增運算符 var num = 10; num++; // num = num + 1盏浇;++num console.log(num); // 1.前置自增和后置自增如果單獨使用,效果是一樣的 // 2.后置的自增 口訣:先返回原值芽狗,后自加1 var age = 10; console.log(age++ + 10); // 20
3.3 前置遞增和后置遞增小結(jié)
- 前置遞增和后置遞增運算符可以簡化代碼的編寫绢掰,讓變量的值+1,比以前的寫法更簡單童擎;
- 單獨使用時滴劲,運行結(jié)果相同;
- 與其他代碼聯(lián)用時顾复,執(zhí)行結(jié)果會不同班挖;
- 后置:先原值運算,后自加(先人后己)
- 前置:先自加芯砸,后運算(先己后人)
- 開發(fā)中萧芙,大多數(shù)使用后置遞增/遞減给梅,并且代碼獨占一行。例如:num++或num--双揪;
4.比較運算符
- 概念:比較運算符(關(guān)系運算符)是兩個數(shù)據(jù)進(jìn)行比較時所使用的運算符动羽,比較運算后,會返回一個布爾值true/false作為比較運算的結(jié)果渔期。
-
=小結(jié)
console.log(3 >= 5); // false console.log(4 <= 9); // true // 1.程序中运吓,等于號是==,默認(rèn)轉(zhuǎn)換數(shù)據(jù)類型 會把字符串型的數(shù)據(jù)轉(zhuǎn)換為數(shù)字型疯趟,只要求值相等就可以拘哨! console.log(3 == 5); //false console.log('curry' == 'nba'); // false console.log(18 == 18); // true console.log(18 == '18'); // true 重點! console.log(18 != 18); // false // 2.程序中會有全等信峻,一模一樣倦青。要求兩側(cè)的值并且數(shù)據(jù)類型完全一致才可以true console.log(18 === 18); // true console.log(18 === '18'); // false
5.邏輯運算符
- 概念:邏輯運算符是用來進(jìn)行布爾值運算的運算符,它的返回值也是布爾值站欺。后面開發(fā)中經(jīng)常用于多個條件的判斷姨夹。
// 1.邏輯與:&& and 兩邊都為true,結(jié)果才是true矾策;只有有一側(cè)是false磷账,結(jié)果就是false console.log(3 > 5 && 3 > 2); // false console.log(3 < 5 && 3 > 2); // true // 2.邏輯或:|| or 兩邊都為false,結(jié)果才是false贾虽;只有有一側(cè)是true逃糟,結(jié)果就是true console.log(3 > 5 || 3 > 2); // true console.log(3 > 5 || 3 < 2); // false // 3.邏輯非 ! not console.log(!true); // false
-
短路運算(邏輯中斷):當(dāng)有多個表達(dá)式(值)時,左邊的表達(dá)式值可以確定結(jié)果時蓬豁,就不會再繼續(xù)計算右邊表達(dá)式的值绰咽。
-
邏輯與
- 語法:表達(dá)式1 && 表達(dá)式2;
- 如果第一個表達(dá)式的值為真地粪,則返回表達(dá)式2取募;
- 如果第一個表達(dá)式的值為假,則返回表達(dá)式1蟆技;
-
邏輯或
- 語法:表達(dá)式1 || 表達(dá)式2玩敏;
- 如果第一個表達(dá)式的值為真,則返回表達(dá)式1质礼;
- 如果第一個表達(dá)式的值為假旺聚,則返回表達(dá)式2;
// 1.用布爾值參與的運算true && false == false // 2. 123 && 456是值或者表達(dá)式參與邏輯運算眶蕉? // 3.邏輯與短路運算:如果表達(dá)式1結(jié)果為真砰粹,則返回表達(dá)式2;如果表達(dá)式1結(jié)果為假造挽,那么返回表達(dá)式1 console.log(123 && 456); // 456 console.log(0 && 456); // 0 console.log(0 && 1 + 2 && 456 * 1234389); // 0 console.log('' && 1 + 2 && 456 * 1234389); // '' // 如果有空的或者否定的為假碱璃,其余是真的 0 '' null undefined NaN // 4.邏輯或短路運算:如果表達(dá)式1結(jié)果為真娩缰,則返回的是表達(dá)是1作岖;如果表達(dá)式1結(jié)果為假顿苇,則返回表達(dá)式2 console.log(123 || 456); // 123 console.log(123 || 789 || 893 * 34343); // 123 console.log(null || 8034 || 343 * 9934); // 8043
-
邏輯與
6.賦值運算符
-
概念:用來把數(shù)據(jù)賦值給變量的運算符葵第。
num = 10; // num = num + 1; num++ num = num + 2; // num += 2 console.log(num); var age = 2; age *= 3; console.log(age);
7.運算符優(yōu)先級
- 一元運算符中的邏輯非優(yōu)先級很高;
- 邏輯與比邏輯非優(yōu)先級高嘴秸;