運(yùn)算符及表達(dá)式
1)()前面不能直接寫++
console.log(++(a--)); //() 不能和++ 一起使用
2)字符串和數(shù)值進(jìn)行比較(字符串會(huì)自動(dòng)轉(zhuǎn)為數(shù)值)
//字符串和數(shù)值進(jìn)行比較
console.log(1 > 2); //false
console.log('123' > 213); //false 自動(dòng)轉(zhuǎn)為number
console.log('123A' > 213); //false
3) 出現(xiàn)NaN 一般都是false
console.log(NaN==NaN);//false
4) undefined是null的派生所以對(duì)應(yīng)的值是相等的
//undefined(null的派生子類) 和 null
console.log(undefined==null);//true
console.log(undefined===null);//false
5) 字符串和字符串進(jìn)行比較 (第一位ASCII碼比較 A 65 a 97)
//字符串和數(shù)值進(jìn)行比較
console.log(1>2);//false
console.log('123'>213);//false 自動(dòng)轉(zhuǎn)為number
console.log('123A'>213);//false 自動(dòng)轉(zhuǎn)為number 不能轉(zhuǎn)就會(huì)出現(xiàn)NaN
6)布爾類型的值和null進(jìn)行比較
//boolean類型的值和null進(jìn)行比較 自動(dòng)轉(zhuǎn)數(shù)值(出現(xiàn) NaN是false)
console.log(true>null);//(1>0) true
console.log(true>undefined);//(1>NaN ) false
// 將un為number類型
var un
console.log(Number(un)) //NaN
console.log(Number(null)) //0
7)恒等 這個(gè)倆個(gè)東西是一個(gè)東西(值相等 + 類型相同)
console.log(Number(true)==1); //true
console.log(Number(true)===1); //true
console.log(Boolean(0)===false); //true
9)null值及undefined跟0進(jìn)行比較
//undefined和0進(jìn)行比較
console.log(undefined == 0);//NaN false
//null是空對(duì)象引用,對(duì)應(yīng)的是一個(gè) 引用類型
//(null是什么都沒有 销斟,而0是占據(jù)空間的)
console.log(null == 0); //false
邏輯運(yùn)算符
邏輯運(yùn)算符 : && 短路與 &斷路與 || 短路或 |斷路或 !(取非)
&& 所有的同時(shí)滿足才為真概行, 只要前面有一個(gè)是假,后面的就不會(huì)看了
|| 只要有一個(gè)為真則為真馋评, 只要前面有一個(gè)是真,后面的就不會(huì)看了
var a = 10, b = 20,c = 30;
//有一個(gè)是ture就是ture 不看后面的
console.log(a > b || b < c); //ture
//前一個(gè)是false就是false 不看后面的
console.log(a > b && b < c); //false
console.log(c > b && b < c); //ture
//逊脯! 取反
console.log(!(a > b || b < c)); //false (韧献!ture)
// || E枪Iぁ!有一個(gè)是ture 就是ture 就取ture
console.log(a > b || 20); //20
var i = 0 || 20
console.log(i); //20
// || 兩個(gè)都是ture 取前面的一個(gè)為ture的
var str = ' ' || "flase" || "ture"
console.log(str);//false(' '為false)
// || 兩個(gè)都是false 取后面的一個(gè)
var str = ' ' || undefined
console.log(i); //undefined
var i = 0 || undefined
console.log(i); //undefined
var str = 0 || ' '
console.log(str); // ' '
//&& 出現(xiàn)false 关面,直接取flase 坦袍;都是ture等太, 取最后一個(gè)
var str = undefined && ' '
var str1 = 10 && 20
var str2 = 0 && ' '
var str3 = !123
console.log(str); //undefined
console.log(str1); //20
console.log(str2); //0
console.log(str3); //false (!ture)
表達(dá)式的概念:
由運(yùn)算符和操作數(shù)(變量或常量)組成的式子:
算術(shù)運(yùn)算符組成的式子叫算術(shù)表達(dá)式键闺, 如:2+3;
關(guān)系運(yùn)算符組成的式子叫關(guān)系表達(dá)式或者條件表達(dá)式, 如:a>5澈驼;
邏輯運(yùn)算符組成的式子叫做邏輯表達(dá)式辛燥, 如:a&&b
運(yùn)算符優(yōu)先級(jí)(從上到下執(zhí)行)
程序控制語句
1)if語法:
if(條件表達(dá)式(boolean類型的值){
需要執(zhí)行的代碼
}else if(條件表達(dá)式){
需要執(zhí)行的代碼
}else{ //上面的都不滿足的情況下
需要執(zhí)行的代碼
}
var height = prompt('請(qǐng)輸入你的身高'); //輸入值為
string類型
if (!(height * 1)) {
console.log('好好輸入 莫搞咯');
} else if (height > 230 || height < 100) {
console.log('hei 回爐重造吧');
} else if (height >= 170) {
console.log('恭喜恭喜');
}else{
console.log('回爐重造吧');
}
//進(jìn)行比較運(yùn)算時(shí),會(huì)轉(zhuǎn)為number類型比較缝其,通過ture or false 再輸出結(jié)果
//習(xí)題練習(xí)
//1.判斷一個(gè)整數(shù)屬于哪個(gè)范圍挎塌?
var num = prompt("輸入一個(gè)整數(shù)");
if (num > 0) {
alert("num大于0");
} else if (num < 0) {
alert("num小于0");
} else {
alert("num等于0");
}
// 2.判斷一個(gè)數(shù)是基數(shù)還是偶數(shù)
var num = prompt("輸入一個(gè)數(shù)");
if (num % 2 == 0) {
alert("這是一個(gè)偶數(shù)");
} else {
alert("這是一個(gè)奇數(shù)");
}
//3.(身高-108)*2=標(biāo)準(zhǔn)體重
var height = prompt("輸入你的身高");
var weight = prompt("輸入你的體重");
var weights = (height - 108) * 2;
if ((weights - 10 <= weight) && (weights + 10 >= weight)) {
alert("標(biāo)準(zhǔn)體重");
} else {
alert("可以考慮一下健身");
}
//4.圓的半徑r,圓的面積是?S=pi*r*r
var r = prompt("輸入半徑")
// var s = pi * r * r;
// var s = Math.PI * r * r;
var s =Math.pi*math.pow(r,2)
if (Number(r > 0)) {
alert(s.toFixed(3));
} else {
alert("輸入錯(cuò)誤");
}
//5.判斷是否為閏年内边?
var year = prompt("輸入一個(gè)年份");
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
alert("這是閏年");
} else {
alert("這是平年");
}
//6.輸入成績(jī)榴都,顯示獎(jiǎng)勵(lì) || score>0 || score
var score = prompt("輸入成績(jī)");
if (score == 100) {
alert("爸爸買輛車");
} else if (score >= 90) {
alert("媽媽買MP4");
} else if (score >= 60) {
alert("媽媽買本書");
}else{
alert("啥也沒有");
}
//7.會(huì)員折扣
var discount = prompt();
if (discount >= 8000) {
alert("打6折");
} else if (discount >= 4000) {
alert("打7折");
} else if (discount >= 2000) {
alert("打8折");
} else {
alert("打9折");
}
2)switch語法:
switch(表達(dá)式){
case 值(常量): 操作 break;
case 值: 操作 break;
case 值: 操作 break;
default: 當(dāng)上面都不滿足的情況下才執(zhí)行默認(rèn)的操作
}
//=== 判斷 值+類型
var f = prompt()
switch (f) {
case "apple":
alert("這是蘋果");
break;
case "banana":
alert("這是香蕉")
break;
case "orange":
alert("這是橙子")
break;
default:
alert("重新輸入哦")
}
總結(jié)
- if 后面不一定要帶else或者else if
- if里面的表達(dá)式如果不是對(duì)應(yīng)的boolean的表達(dá)式 他會(huì)強(qiáng)制轉(zhuǎn)換為boolean類型(自動(dòng)轉(zhuǎn)換)
- if 里面可以嵌套if 以及相關(guān)的內(nèi)容(else else 都可以嵌套的)
- switch 里面填寫的表達(dá)式是會(huì)返回值 這個(gè)值一般是常量
- switch里面有case和對(duì)應(yīng)的default case表示一個(gè)個(gè)的選項(xiàng) 對(duì)應(yīng)的default表示默認(rèn)選項(xiàng)
- 多個(gè)case可以在一行書寫 表示對(duì)應(yīng)的處理語句是一個(gè)
- break用于跳出整個(gè)代碼塊 跳出switch (也可以跳出循環(huán)的代碼塊)
- switch必須要有規(guī)定的值的時(shí)候才有 他不會(huì)使用到有區(qū)間的內(nèi)容(比對(duì)是恒等比對(duì))
- if 是可以使用區(qū)間值 也可以使用固定值
- if效率和switch效率 從一行代碼區(qū)分對(duì)應(yīng)的來說 if效率會(huì)高點(diǎn) 多行代碼區(qū)分 switch效率會(huì)高(用空間換時(shí)間)!D洹嘴高!