條件語句控制表達(dá)式
運(yùn)算符及表達(dá)式
()前面不能直接寫++
console.log(++a+a++);//24 ?? //() 不能跟 ++ 一起用
字符串和數(shù)值進(jìn)行比較(字符串會(huì)自動(dòng)轉(zhuǎn)為數(shù)值)
//字符串和數(shù)值進(jìn)行比較
console.log(1 > 2); //false
console.log('123' > 123); //false 自動(dòng)轉(zhuǎn)number
console.log('123A' > 123); //false 自動(dòng)轉(zhuǎn)number掌眠,如果不能轉(zhuǎn)就會(huì)出現(xiàn)NaN
出現(xiàn)NaN一般都是false
console.log(NaN==NaN);//false
undefinde是null的派生所以對(duì)應(yīng)的值是相當(dāng)?shù)?/b>
//undefined 和 null的派生子類 和 null
console.log(undefined==null);//true
console.log(undefined===null);//false
字符串和字符串比較(根據(jù)ASCII碼 A65 a96 自動(dòng)進(jìn)行ASSCII碼比較 但是是比較第一位)
//字符串和字符串比較(根據(jù)ASCII碼 A65 a96 自動(dòng)進(jìn)行ASSCII碼比較 但是是比較第一位)
console.log('a'>'b');//flase
console.log('a'<'b');//true
console.log('bAA'<'azz');//false
布爾類型的值和null進(jìn)行比較
//boolean類型的值和null進(jìn)行比較 自動(dòng)轉(zhuǎn)數(shù)值(出現(xiàn)NaN是false)
console.log(true>null);//true
console.log(true);//true
console.log(true>undefined);//false
轉(zhuǎn)換會(huì)先轉(zhuǎn)換再進(jìn)行比較
//恒等 這倆個(gè)內(nèi)容是一個(gè)內(nèi)容
console.log(Number(true)==1);//true
console.log(Number(true)===1);//true
console.log(Number(0)==false);//true
null值及undefined跟0進(jìn)行比較
//undefined和0進(jìn)行比較
console.log(undefined==0);//NaN false
//null是空對(duì)象引用 對(duì)應(yīng)的是一個(gè)引用類型 引用類型比較的是地址
console.log(null==0);//false
邏輯運(yùn)算符
//邏輯運(yùn)算符 && 短路與 &斷路與 ||短路 或 |斷路或充易!
//&& 所有的同時(shí)滿足才為真 && 只要前面有一個(gè)是假后面的就不會(huì)看了 &看完全部
vara=10,
b=20,
c=30;
console.log(a>b&&b<c);//false
console.log(c>b&&b<c);//true
// ||有一個(gè)是true就是true? 前面只要出現(xiàn)了ture 就不看后面的? |看完全部
console.log(c>b||a>b);//true
//! 取反
console.log(!c>b||a>b);//flase
console.log(!(c>b||a>b));//flase
// || 常用 有一個(gè)是ture 取true
console.log(a>b||20);//true ?? //20
vari=0||10
console.log(i);//10
//如果倆個(gè)都是false 取最后一個(gè)
varstr=undefined||''
console.log(str);//'' 空字符串
//如果倆個(gè)都是true的情況下 取第一個(gè)位true的結(jié)果
varstr1="A"||"B"
console.log(str1);//A 短路操作
varstr2=""||'false'||'true'
console.log(str2);//false
//三目運(yùn)算 邏輯運(yùn)算的優(yōu)先級(jí)會(huì)高于三目運(yùn)算符
varstr3=(10>20?'':'123')||(30>20?'':'456')
console.log(str3);//123
//如果出現(xiàn)false 直接取false 如果全是true 取最后一個(gè)
varstr4=10&&20;
console.log(str4);//20
varstr5=undefined&&''
console.log(str5);//undefined
//轉(zhuǎn)成boolean類型
varstr6=!123
console.log(str6);//false
//相當(dāng)于將對(duì)應(yīng)的boolean類型表達(dá)式解析出對(duì)應(yīng)的值
console.log(20>30||30<20);//false
console.log(false||false);//false
console.log(20>30||20);//20
console.log(false||20);//20
console.log(0||20);//20
表達(dá)式的概念:
由運(yùn)算符和操作數(shù)(變量或常量)組成的式子
1愿汰、算術(shù)運(yùn)算符組成的式子叫算術(shù)表達(dá)式蔚鸥,? 如:2+3丢郊;
2昧识、關(guān)系運(yùn)算符組成的式子叫關(guān)系表達(dá)式或者條件表達(dá)式纵势, 如:a>5埠偿;
3步清、邏輯運(yùn)算符組成的式子叫做邏輯表達(dá)式要门, 如:a&&b
運(yùn)算符優(yōu)先級(jí)(從上到下執(zhí)行)
運(yùn)算符描述
程序控制語句(所有程序、語言都有)
控制程序的執(zhí)行(利用條件控制 利用循環(huán)來控制)
條件控制語句
if 如果(第一個(gè)條件)else if 如果(第二個(gè)條件 無限加)else 否則(只有一個(gè) 上面都不滿足的情況下)
if 和 else if 同時(shí)滿足的情況下 它只會(huì)進(jìn)入第一個(gè)滿足的條件
if(條件表達(dá)式(boolean類型的值,如果當(dāng)前這個(gè)不是一個(gè)boolean類型的值它會(huì)自動(dòng)轉(zhuǎn)成boolean類型)){
? ? 需要執(zhí)行的代碼
}elseif(條件表達(dá)式){
? ? 需要執(zhí)行的代碼
}else{//上面的都不滿足的情況下
? ? 需要執(zhí)行的代碼
}
var a=8,b=8;
//從上到下的順序進(jìn)行的 上面只有一個(gè)進(jìn)入到下面的內(nèi)容就不會(huì)執(zhí)行了
if(a>b){
? ? console.log("我是a的值為"+a);
}else if(a==b){
? ? console.log("我是b的值為"+b);
}else{
? ? console.log("上面的都不滿足");
}
一條執(zhí)行語句可以省略{}, 多條時(shí)不能省略{}, 建議不管是一條還是多條都寫上{}
條件嵌套
//保證良好的縮進(jìn) 保證可讀性
//求y的值
varx=prompt()
vary
//可能不是數(shù)值
//提取條件優(yōu)秀級(jí) 先找出問題的條件 再找大的條件 再找小的條件
if(Number(x)||x==0) {
if(x<0) {
y=-1
}elseif(x==0) {
y=0
}else{
y=1
}
alert('當(dāng)x的值為'+x+'時(shí)欢搜,'+'y的值為'+y);
}else{
alert('您的輸入有誤询微!')
}
switch
switch屬于對(duì)應(yīng)的值判斷? 里面的是對(duì)應(yīng)的表達(dá)式(產(chǎn)生對(duì)應(yīng)的值)下面的case就是一個(gè)個(gè)的值選項(xiàng)
switch(表達(dá)式){
? ? case值(是常量):操作break;
? ? case值:break;
? ? case值:break;
? ? default;當(dāng)上面都不滿足的情況下才執(zhí)行默認(rèn)的操作
}
實(shí)例
//指令系統(tǒng) 發(fā)送1吃飯 發(fā)送2玩游戲 發(fā)送3睡覺 發(fā)送4再來一次
varnumber=prompt('請(qǐng)輸入指令');
//恒等判斷 需要對(duì)應(yīng)的類型和值一樣
//需要加引號(hào)
switch(number) {
case'1':
case'5'://1和5干一樣的事
alert('準(zhǔn)備吃飯');
? ? break;
case'2':
? ? alert('準(zhǔn)備玩游戲');
? ? break;
case'3':
? ? alert('準(zhǔn)備睡覺');
? ? break;
case'4':
alert('再來一次');
break;
default:
? ? alert('無該指令!');
}
//break跳出 跳出整個(gè)代碼塊 switch代碼以及循環(huán)代碼塊
//如果沒有break 從頭走到底 會(huì)從滿足條件的第一個(gè)走到default里面
//switch不能判斷范圍 只能對(duì)應(yīng)的進(jìn)行特定的值的判斷
//if 判斷范圍 在一定區(qū)間內(nèi)容進(jìn)行判斷(功能更加強(qiáng)大)