<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>相等運(yùn)算符</title>
?<script type="text/javascript">
??/*
??相等運(yùn)算符用來比較兩個(gè)值是否相等筐钟,
???如果相等會(huì)返回true,否則返回false
??
??使用 == 來做相等運(yùn)算
???- 當(dāng)使用==來比較兩個(gè)值時(shí)境蔼,如果值的類型不同,則會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換咬清,將其轉(zhuǎn)換為相同的類型捐凭,然后再比較
??不相等
???不相等用來判斷兩個(gè)值是否不相等,如果不相等返回true鸽捻,否則返回false
????- 使用 != 來做不相等運(yùn)算
????- 不相等也會(huì)對(duì)變量進(jìn)行自動(dòng)的類型轉(zhuǎn)換呼巴,如果轉(zhuǎn)換后相等它也會(huì)返回false
??
??===
???全等
???- 用來判斷兩個(gè)值是否全等,它和相等類似御蒲,不同的是它不會(huì)做自動(dòng)的類型轉(zhuǎn)換
????如果兩個(gè)值的類型不同衣赶,直接返回false
??!==
???不全等
???- 用來判斷兩個(gè)值是否不全等,和不等類似厚满,不同的是它不會(huì)做自動(dòng)的類型轉(zhuǎn)換
????如果兩個(gè)值的類型不同府瞄,直接返回true
??*/
??
??console.log(1 == 1);
??var a = 10;
??// console.log(a == 4);//false
??console.log('1' == 4);//true
??console.log(true == '1');//true
??console.log(null == 0);//false
??console.log(null == undefined);//true
??console.log(NaN == '1');//false
??console.log(NaN == undefined);//false
??console.log(NaN == NaN);//false
??var b =NaN;
??// console.log(b == NaN);//false
??// console.log(isNaN(b));//true
??// console.log(10 != 5);//true
??// console.log(10 != 10);//false
??// console.log('abcd' != 'abcd');//false
??// console.log('1' != 1);//false
??// console.log('123' == 123);//true
??// console.log('123' === 123);//false
??// console.log(null == undefined);//true
??// console.log(null === undefined);//false
??console.log(1 != '1');//false
??console.log(1 !== '1');//true
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>Boolean</title>
?<script type="text/javascript">
??/*
??Boolean 布爾值
???布爾值只有兩個(gè),主要用來做邏輯判斷
???true
????- 表示真
???false
????- 表示假
???
???使用typeof檢查一個(gè)布爾值時(shí)碘箍,會(huì)返回boolean
??*/
??var bool = false;
??console.log(bool);
??console.log(typeof bool);//boolean
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>Null和Undefined</title>
?<script type="text/javascript">
??/*
??Null(空值)類型的值只有一個(gè)遵馆,就是null
???null這個(gè)值專門用來表示一個(gè)為空的對(duì)象
???使用typeof檢查一個(gè)null值時(shí),會(huì)返回object
??Undefined(未定義)類型的值只有一個(gè)丰榴,就undefind
???當(dāng)聲明一個(gè)變量货邓,但是并不給變量賦值時(shí),它的值就是undefined
???使用typeof檢查一個(gè)undefined時(shí)也會(huì)返回undefined
??*/
??var a =null;
??console.log(a);
??console.log(typeof a);//object
??var b;//undefined
??console.log(b);
??console.log(typeof b)
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>運(yùn)算符的優(yōu)先級(jí)</title>
?<script type="text/javascript">
??/*
??, 運(yùn)算符
???使用,可以分割多個(gè)語句多艇,一般可以在聲明多個(gè)變量時(shí)使用
?? */
?? // var a,b,c;
?? var a=1, b=2, c=3;
?? // alert(b);//2
?? var result = 1+2*3;
?? result = 1 || 2 && 3;
?? console.log('result =' + result);
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>條件運(yùn)算符</title>
?<script type="text/javascript">
??/*
??條件運(yùn)算符也叫三元運(yùn)算符
???語法:
????條件表達(dá)式?語句1:語句2;
???- 執(zhí)行的流程:
????條件運(yùn)算符在執(zhí)行時(shí)逻恐,首先對(duì)條件表達(dá)式進(jìn)行求值,
?????如果該值為true,則執(zhí)行語句1复隆,并返回執(zhí)行結(jié)果
?????如果該值為false拨匆,則執(zhí)行語句2,并返回執(zhí)行結(jié)果
????如果條件的表達(dá)式的求值結(jié)果是一個(gè)非布爾值挽拂,會(huì)將其轉(zhuǎn)換為布爾值然后在運(yùn)算
??*/
??
??// true ? alert("語句1") : alert("語句2");
??// false ? alert("語句1") : alert("語句2");
??var a = 30;
??var b = 43;
??var c = 50;
??// a>b ? alert('a大') ; alert('b大')惭每;
??// var max = a>b ? a : b;
??// max = max>c ? max : c;
??var max = a > b ? (a > c ? a : c) : (b > c ? b : c);
??// console.log('max =' + max);
??'hello' ? alert('語句1') : alert('語句2');
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>關(guān)系運(yùn)算符</title>
?<script type="text/javascript">
??/*
??通過關(guān)系運(yùn)算符可以比較兩個(gè)值之間的大小關(guān)系,
???如果關(guān)系成立它會(huì)返回true亏栈,如果關(guān)系不成立則返回false
??
??> 大于號(hào)
???- 判斷符號(hào)左側(cè)的值是否大于右側(cè)的值
???- 如果關(guān)系成立台腥,返回true,如果關(guān)系不成立則返回false
??
??>= 大于等于
???- 判斷符號(hào)左側(cè)的值是否大于或等于右側(cè)的值
??
??< 小于號(hào)
??<= 小于等于
??
??非數(shù)值的情況
???- 對(duì)于非數(shù)值進(jìn)行比較時(shí)绒北,會(huì)將其轉(zhuǎn)換為數(shù)字然后再比較
???- 如果符號(hào)兩側(cè)的值都是字符串時(shí)黎侈,不會(huì)將其轉(zhuǎn)換為數(shù)字進(jìn)行比較,而會(huì)分別比較字符串中字符的Unicode編碼
??*/
??
??var result = 5 > 10;//flase
??var rasult = 5 > 4;//true
??var result = 5 > 5;//false
??var result = 5 >= 5;//true
??var result = 5 >= 4;//true
??var result = 5 < 4;//false
??var result = 4 <= 4;//true
??
??// console.log("result = "+result);
??// console.log(1 > true);//false
??// console.log(1 >= true);//true
??// console.log(1 >= '0');//true
??// console.log(10 > 'null');//true 10>0
??//Nan和任何值比較結(jié)果都是false
??// console.log(10 > 'hello');//false
??// console.log(10 >= 'hello');//false
??// console.log(10 < 'hello');//false
??// console.log(10 <= 'hello');//false
??console.log(true > false);//true 1>0
??console.log('1' < '5');//true
??console.log(11 < '5');//false
??console.log('a' < 'b');//true
??console.log('abc' < 'b')//true
??console.log('bbc' < 'b')//false
??console.log('bbc' < 'bcd')//true
??console.log('我' < '你')//false
??console.log('1112332131' < +'5');//false
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>賦值運(yùn)算符</title>
?<script type="text/javascript">
??/*
??=
???可以將符號(hào)右側(cè)的值賦值給符號(hào)左側(cè)的變量
??+=
???a += 5 等價(jià)于 a = a + 5
??-=
???a -= 5 等價(jià)于 a = a - 5
??*=
???a *= 5 等價(jià)于 a = a * 5
??/=
???a /= 5 等價(jià)于 a = a / 5
??%=
???a %= 5 等價(jià)于 a = a % 5
???
?? */
??var a = 10;
??//a = a + 5;
??// a -= 5;
??// a += 5;
??// a *= 5;
??// a /= 5;
??a %= 3;//1
??console.log("a = "+a);
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>與或運(yùn)算</title>
?<script type="text/javascript">
??/*
??&& || 非布爾值的情況
???- 對(duì)于非布爾值進(jìn)行與或運(yùn)算時(shí)闷游,會(huì)先將其轉(zhuǎn)換為布爾值峻汉,然后再運(yùn)算,并且返回原值
???- 與運(yùn)算:
????- 如果第一個(gè)值為true脐往,則必然返回第二個(gè)值
????- 如果第一個(gè)值為false休吠,則直接返回第一個(gè)值
??
???- 或運(yùn)算
????- 如果第一個(gè)值為true,則直接返回第一個(gè)值
????- 如果第一個(gè)值為false业簿,則返回第二個(gè)值
??*/
??
??var result = 1 && 2;//true && true 2
??result = 2 && 1;//true&&true 1
??result = 0 && 2;//false && true 0
??result = 2 && 0;//true && false 0
??result = NaN && 0;//false && false NaN
??result = 0 && NaN;//false && false 0
??result = 2 || 1;//true && true 2
??result = 2 || NaN;//true && false 2
??result = NaN || 0;//false && false 0
??result = ''||'hello';//false||true 'hello'
??result = -1 || '您好';//true||true -1
??
??console.log("result = "+result);
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>邏輯運(yùn)算符</title>
?<script type="text/javascript">
??/*
??JS中為我們提供了三種邏輯運(yùn)算符
??! 非
???- !可以用來對(duì)一個(gè)值進(jìn)行非運(yùn)算
???- 所謂非運(yùn)算就是值對(duì)一個(gè)布爾值進(jìn)行取反操作瘤礁,
????true變false,false變true
???- 如果對(duì)一個(gè)值進(jìn)行兩次取反梅尤,它不會(huì)變化
???- 如果對(duì)非布爾值進(jìn)行元素柜思,則會(huì)將其轉(zhuǎn)換為布爾值,然后再取反
????所以我們可以利用該特點(diǎn)克饶,來將一個(gè)其他的數(shù)據(jù)類型轉(zhuǎn)換為布爾值
????可以為一個(gè)任意數(shù)據(jù)類型取兩次反酝蜒,來將其轉(zhuǎn)換為布爾值,原理和Boolean()函數(shù)一樣
??
??&& 與
???- &&可以對(duì)符號(hào)兩側(cè)的值進(jìn)行與運(yùn)算并返回結(jié)果
???- 運(yùn)算規(guī)則
????- 兩個(gè)值中只要有一個(gè)值為false就返回false矾湃,
?????只有兩個(gè)值都為true時(shí)亡脑,才會(huì)返回true
????- JS中的“與”屬于短路的與,
?????如果第一個(gè)值為false邀跃,則不會(huì)看第二個(gè)值
??
??|| 或
???- ||可以對(duì)符號(hào)兩側(cè)的值進(jìn)行或運(yùn)算并返回結(jié)果
???- 運(yùn)算規(guī)則:
????- 兩個(gè)值中只要有一個(gè)true霉咨,就返回true
?????如果兩個(gè)值都為false,才返回false
????- JS中的“或”屬于短路的或
?????如果第一個(gè)值為true拍屑,則不會(huì)檢查第二個(gè)值
?? */
??
??var a = false;
??a = !!a;
??
??// console.log("a = " + a);
??var b = 10;//true
??b = !!b;//false
??// console.log('b = ' + b);
??// console.log(typeof b)
??var result = true && true;//true
??result = true && false;//false
??result = false && true;//false
??result = false && false;//false?
??// console.log('result = ' + result);
??// true && alert('看我出不出來');
??// false && alert('看我出不出來');
??result = false || false;//false
??result = true || false;//true
??result = false || true;//true
??result = true || true;//true
??// console.log('result = ' + result);
??//false ||alert('123');
??true || alert('123');
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>自增和自減的練習(xí)</title>
?<script type="text/javascript">
??var n1=10;
??var n2=20;
??
??var n = n1++; //
??
??console.log('n=' + n);? //
??console.log('n1=' + n1); //
??
??n = ++n1; //
??console.log('n=' + n); //
??console.log('n1=' + n1); //
??
??n = n2--;//
??console.log('n=' + n); //
??console.log('n2=' + n2); //
??
??n = --n2; //
??console.log('n=' + n); //
??console.log('n2=' + n2); //
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>自增和自減</title>
?<script type="text/javascript">
??/*
??自增 ++
???- 通過自增可以使變量在自身的基礎(chǔ)上增加1
???- 對(duì)于一個(gè)變量自增以后途戒,原變量的值會(huì)立即自增1
???- 自增分成兩種:后++(a++) 和 前++(++a)?
????無論是a++還是++a,都會(huì)立即使原變量的值自增1
????不同的是a++和++a的值不同
????a++的值等于原變量的值(自增前的值)
????++a的值等于新值 (自增后的值)
??
??自減 --
???- 通過自減可以使變量在自身的基礎(chǔ)上減1
???- 自減分成兩種:后--(a--) 和 前--(--a)
????無論是a--還是--a都會(huì)立即使原變量的值自減1
????不同的是a-- 和 --a的值不同
?????a-- 是變量的原值 (自減前的值)
?????--a 是變量的新值 (自減以后的值)
??*/
??var a = 1;
??// a = a + 1;
??// a++;
??// ++a;
??// console.log(a++);//1 先賦值
??// console.log(++a)l//2 先自增
??// console.log("a = " + a);
??var c = 10;
??c++;
??console.log(c++);
?</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
?<meta charset="UTF-8">
?<title>一元運(yùn)算符</title>
?<script type="text/javascript">
??/*
??一元運(yùn)算符僵驰,只需要一個(gè)操作數(shù)
???+ 正號(hào)
????- 正號(hào)不會(huì)對(duì)數(shù)字產(chǎn)生任何影響
???- 負(fù)號(hào)
????- 負(fù)號(hào)可以對(duì)數(shù)字進(jìn)行符號(hào)的取反
??
???- 對(duì)于非Number類型的值喷斋,它會(huì)將先轉(zhuǎn)換為Number唁毒,然后再運(yùn)算
???- 可以對(duì)一個(gè)其他的數(shù)據(jù)類型使用+,來將其轉(zhuǎn)換為number,它的原理和Number()函數(shù)一樣
??*/
???
??var a = 123;
??a = +a;
??a = -a;
??a = true;//1
??a = -a;
??a = '18';
??a = +a;
??
??// console.log(typeof a);
??// console.log("a = " + a);
??// var result = 1 + '2' + 3;//'123'
??var result = 1 + +'2' + 3;//6
??console.log('result = ' + result);
?</script>
</head>
<body>
</body>
</html>