條件判斷
01直接量
/* 1.直接量是什么? */
? ? //? 直接在 js 中 寫的數(shù)據(jù)~~!
? ? // 2.數(shù)據(jù)類型是什么?
? ? // 因為 JS 中的數(shù)據(jù) 明顯可以分成很多類,所以 就 分出 了 若干個 數(shù)據(jù)類型
? ? // 3.如何檢測數(shù)據(jù)類型?
? ? // typeof --> 類型名稱字符串
? ? var a = typeof '小白白'; // var a = 'string';
? ? var b = typeof(5201314); // var b = 'number'
? ? // 4.變量是什么?
? ? // 1.本質(zhì)上 是 內(nèi)存里的 一塊 空間,變量名 是 這個空間的 “代號”
? ? // 2.通俗的說,變量就是一個 容器,用來裝數(shù)據(jù)~~! 一次 只能裝一個數(shù)據(jù)
? ? var tcName = '波老師';
? ? tcName = '澤老師';
? ? console.log(tcName);
? ? console.log(tcName + ',我愛你~~~');
02數(shù)據(jù)類型
//1.簡單數(shù)據(jù)類型 ----------------------------------------------------
? ? //1.1 數(shù)值類型 - Number
? ? //? ? a.整數(shù) 小數(shù)? 負數(shù) 都屬于數(shù)值
? ? //? ? b.最大值和最小值? -> Number.MAX_VALUE? 和 Number.MIN_VALUE
? ? //? ? c.數(shù)值類型 中的三個特殊值:Infinity 、-Infinity 、NaN
? ? //? ? d.無窮大 Infinity? 無窮小 -Infinity
? ? //? ? e.【NaN - 非數(shù)值】 (Not a number) : 代表 算數(shù)運算后的錯誤結(jié)果
? ? //a. 當 算數(shù)運算符 運算 一個 不是 數(shù)值的 數(shù)據(jù)時,無法計算結(jié)果,所以 返回 NaN
? ? var num1 = 12 * '我愛你'; // NaN
? ? console.log(num1); // NaN
? ? //b. 任何值 與 NaN 運算結(jié)果 都是 NaN
? ? console.log(NaN / 100);
? ? //c. NaN 與任何值都不相等 ,包括它自己
? ? //d. 使用 isNaN(x) 來 檢測 x 是不是 一個 NaN
? ? //? ? ? ? ? ? ? ? ? ? 如果 x 是 一個 NaN , 就返回 true
? ? //? ? ? ? ? ? ? ? ? ? ? ? ? 不是? ? ? ? ,? ? ? false
? ? console.log(' isNaN(520) = ' + isNaN(520));
? ? console.log(' isNaN(\'討厭\') = ' + isNaN('討厭'));
//1.2 字符串類型 - String
? ? var str1 = '我是你哥哥';
? ? var str2 = "我是你姐姐";
? ? var str3 = '我喜歡"小狗" ,你\'呢?'
? ? var str4 = "我喜歡'小貓',你是嗎?";
? ? console.log('我要換行\(zhòng)n不是換老婆~~!');
? ? //1.3 布爾值類型 - Boolean
? ? var male = true;
? ? var female = false;
? ? //1.4 未定義類型 - Undefined
? ? //? ? 有且只有一個值 undefined
? ? //? ? 當一個 變量 聲明 但么有賦值,默認就是 undefined
? ? var a;
? ? console.log(a);
? ? //1.5 空類型 - Null
? ? //? ? 有且只有一個值 null
? ? //? ? prompt 輸入框,用戶點擊取消時,返回的 是 null
? ? // var usrName = prompt('請輸入您的名字:');
? ? // console.log('usrName = ' + usrName);
? ? // undefined 和 null 判等
? ? console.log(1 == 1); // true
? ? console.log(undefined == null); // true
? ? console.log(undefined === null); // false
? ? //2.復(fù)雜數(shù)據(jù)類型-------------------------------------------------
? ? // Object - 對象
? ? // Array - 數(shù)組
? ? // Function - 函數(shù)
? ? // 自定義類型
03復(fù)合運算符
//1. 算數(shù)運算符 + - * / % **
? ? ? // ** 求次方
? ? ? console.log(2**3);// 2 * 2 * 2
? ? ? //2. = 賦值運算符
? ? ? //? = 會 將 右邊的 值 賦給 左邊
? ? ? var a = 1;
? ? ? // var usrName = prompt('您的女友名字:');
? ? ? //3.復(fù)合賦值運算符----------------------------------------------
? ? ? //? 作用:將 變量里的值 取出 ,與另一個 值運算,并將 結(jié)果 重新 賦值 到這個變量
? ? ? //? 口訣:對某個變量自身 做 算數(shù)運算
? ? ? //? +=? -=? ? *=? ? /*? ? %=
? ? ? //3.1 += -------------------
? ? ? var num = 1;
? ? ? // num = num + 2;
? ? ? num += 2;
? ? ? console.log(num); // 3
? ? ? //3.2 -=
? ? ? var num = 100;
? ? ? num -= 40; // num = num - 40;
? ? ? console.log(num); // 60
? ? ? //3.3 *=
? ? ? var num = 5;
? ? ? num *= 5; // num = num * 5;
? ? ? console.log(num); // 25
? ? ? //3.4 /=
? ? ? var num = 100;
? ? ? num /= 5;
? ? ? console.log(num);//20
? ? ? //4.神奇的 += ---------------------------------------------------------------
? ? ? //4.1 如果 變量 是和 數(shù)值 運算,那么 += 就起到了 算數(shù)運算的 效果
? ? ? var num = 110;
? ? ? num += 120;
? ? ? console.log(num);
? ? ? //4.2 如果 變量 是和 非數(shù)值 運算,那么 += 就會起到 字符串的連接 作用
? ? ? var str = 123;
? ? ? str+='我愛你~~~';
? ? ? str+='你愛我媽?';
? ? ? str+=',分手~~!'
? ? ? console.log('str ='+str); // 123我愛你~~~你愛我媽?,分手~~!
04比較運算符
//1.比較運算符:比大小的~~?。?/p>
? ? ? //? 運算符 本身 沒有意義,要和 兩邊的數(shù)據(jù) 組成 表達式 才有意義
? ? ? //? >? ? <? ? >=? ? <=? ? ==? !=? ? ===? ? !==
? ? ? //? 【永遠都會返回 bool值】,要么 返回? true,要么 返回 false
? ? ? console.log(1 > 2);? // false
? ? ? console.log(1 < 2);? // true
? ? ? console.log(1 == 2);? // false
? ? ? console.log(1 == 1);? // true
? ? ? // == 只判斷值是不是相等,不判斷類型
? ? ? // === 全等號,判斷值 也 判斷類型
? ? ? console.log(1 == '1');// true
? ? ? console.log(1 === '1');// false
? ? ? console.log(1 === 1);// true
? ? ? // 大于等于? 和 小于等于
? ? ? // 注意: 條件是或的關(guān)系,只要 滿足一個 就返回 true,只有兩個都不滿足時才返回 false
? ? ? console.log(1 >= 2); // false
? ? ? console.log(1 >= 1); // true
? ? ? console.log(1 >= 0); // true
? ? ? // 不等號? 全不等號
? ? ? console.log(1 != 1); // false
? ? ? console.log(1 != 2); // true
? ? ? console.log(1 != '1'); // false
? ? ? console.log(1 !== 1); // false
05邏輯運算符
//1.邏輯運算符
? ? //? &&? ? ||? ? !
? ? //1.1邏輯與 && ---------------------------------------------------------------
? ? // 只有 && 兩邊的 數(shù)據(jù) 都為 true 時,整個 邏輯與 表達式 才返回 true
? ? //? ? ? ? ? ? ? ? ? ? 只要有一個是 false,整個 邏輯與表達式 就返回 false
? ? // 口訣:一假都假
? ? //? 左邊的表達式? &&? 右邊的表達式? -> 表達式結(jié)果
? ? //? ? true? ? ? &&? ? true? ? ? ? ? ? true
? ? //? ? false? ? &&? ? true? ? ? ? ? ? false
? ? //? ? true? ? ? &&? ? false? ? ? ? ? false
? ? // 找男朋友? --? 高 富 帥 情商高
? ? // 如果 四個 條件 都要滿足 才 成立: 邏輯與? var isOk = 高 && 富 && 帥 && 情商高;
? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 高富帥情商 4個條件 都要滿足 才 返回 true
? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 只要有一個不滿足,都返回 false
? ? var isOk = 1 > 2 && 1 >= 0; // false
? ? //? ? ? ? false && true? ? // false
? ? var isOk = 1 == 1 && 1 >= 0; // true
? ? //? ? ? ? ? true? && true? ? // true
? ? var isOk = 1 == 1 && 1 >= 0 && 2 > 1; // true
? ? //? ? ? ? ? true &&? true? && 2 > 1
? ? //? ? ? ? ? ? ? ? true? ? ? && true
? ? //1.2 邏輯或 ||? ---------------------------------------------------------------
? ? // 只要 || 兩邊有一個是 true,整個表達式 就返回 true
? ? //? ? ? ? 兩邊都是 false,整個表達式 才返回 false
? ? // 口訣:一真都真
? ? // 左邊的表達式? ||? 右邊的表達式? -> 表達式結(jié)果
? ? //? ? true? ? ? ||? ? false? ? ? ? ? true
? ? //? ? false? ? ||? ? true? ? ? ? ? true
? ? //? ? false? ? ||? ? false? ? ? ? ? false
? ? // 如果 四個 條件中, 滿足一個就成立:邏輯或 var isOk = 高 || 富 || 帥 || 情商高;
? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 高富帥情商 4個條件 只要滿足一個 就 返回 true
? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 只有4個條件都不滿足,才返回 false
? ? var isOk = 1 > 2 || 1 >= 0; // true
? ? //? ? ? ? ? false || true? -> true
? ? var isOk = 1 == 1 || 1 == 0; // true
? ? //? ? ? ? ? true? ||? false; -> true
? ? //1.3 邏輯非(取反運算符)
? ? //? ? 可以用來 將 一個 布爾值 變成 相反的值?
? ? //? ? !true -> false
? ? //? ? !false -> true
? ? console.log('!true = ' + !true);
? ? console.log('!false = ' + !false);
? ? console.log(!(1 > 2));// true
06條件語句
//1.順序結(jié)構(gòu) 語句 ,由上到下的 順序執(zhí)行 每一行代碼
? ? // console.log('裙姐考試回來了~~');
? ? // console.log('他爸爸問他打了多少分');
? ? // console.log('裙姐打了59分');
? ? // console.log('他爸爸狠狠的打他屁股了~~~');
? ? // console.log('裙姐睡著了~~~');
? ? //2.條件結(jié)構(gòu) 語句
? ? //2.1 if 單個條件
? ? // if(bool){
? ? //? if 代碼塊
? ? // }
? ? //? ? 如果? if的小括號中 是 true,那么 就執(zhí)行 if代碼塊(if后緊跟著的 大括號里的代碼)
? ? //? ? ? ? ? ? ? ? ? ? ? 是false, 那就跳過 if代碼塊,執(zhí)行 后面的代碼
? ? // var score = 59;
? ? // console.log('裙姐考試回來了~~');
? ? // console.log('他爸爸問他打了多少分');
? ? // console.log('裙姐打了 ' + score + ' 分');
? ? // if (score < 60) {
? ? //? console.log('他爸爸狠狠的打他屁股了~~~');
? ? // }
? ? // console.log('裙姐睡著了~~~');
? ? //2.2 if else? 二選一
? ? // if(bool){
? ? //? if 代碼塊
? ? //}
? ? //else{
? ? //? else代碼塊
? ? //}
? ? // 如果 if 中的是 true,就執(zhí)行 if 代碼塊
? ? //? ? ? ? ? ? ? false,就執(zhí)行 else代碼塊
? ? // 二選一:if else 兩個 代碼塊,只會 根據(jù)條件結(jié)果 執(zhí)行一個
? ? // var score = 89;
? ? // console.log('裙姐考試回來了~~');
? ? // console.log('他爸爸問他打了多少分');
? ? // console.log('裙姐打了 ' + score + ' 分');
? ? // if (score < 60) { // 如果 true,就執(zhí)行 if代碼塊 ,如果 是 false,就執(zhí)行 else 代碼塊
? ? //? console.log('他爸爸狠狠的打他屁股了~~~');
? ? // } else {
? ? //? console.log('他爸爸給了他1000塊錢~~~');
? ? // }
? ? // console.log('裙姐睡著了~~~');
? ? //2.3 if else if else ......多條件
? ? /* 多條件 if? 可以用來 在一個業(yè)務(wù)中 根據(jù)不同條件 執(zhí)行不同的代碼, 一旦滿足一個條件,后面的else if 就不執(zhí)行了,和 多個 if 比起來,執(zhí)行效率更高
? ? if(bool){
? ? }else if(bool){
? ? }else if(bool){
? ? }else{
? ? }
? ? */
? ? // var score = 59;
? ? // console.log('裙姐考試回來了~~');
? ? // console.log('他爸爸問他打了多少分');
? ? // console.log('裙姐打了 ' + score + ' 分');
? ? // if (score < 60) {
? ? //? console.log('他爸爸狠狠的打他屁股了~~~');
? ? // } else if (score >= 60 && score < 80) {
? ? //? console.log('給500塊~~~~');
? ? // } else if (score >= 80 && score < 100) {
? ? //? console.log('給1000塊~~~~');
? ? // } else {
? ? //? console.log('給10000塊~~~~');
? ? // }
? ? // console.log('裙姐睡著了~~~');
? ? // var usrName = '小蒼蒼';
? ? // if(usrName == '小蒼蒼'){
? ? //? console.log('來,我們一起學(xué)習(xí)代碼編程~~!');
? ? // }else if(usrName == '小澤澤'){
? ? //? console.log('來,我們一去學(xué)習(xí)打籃球~~~!');
? ? // }else if(usrName == '裙姐姐'){
? ? //? console.log('來,我們一起去非洲探親~~~~!');
? ? // }else{
? ? //? console.log('對不起,我不認識你,媽媽不讓我和陌生人說話~~!');
? ? // }
? ? //2.4 嵌套if
? ? var score = 59;
? ? console.log('裙姐考試回來了~~');
? ? console.log('他爸爸問他打了多少分');
? ? console.log('裙姐打了 ' + score + ' 分');
? ? if (score < 60) {
? ? ? console.log('他爸爸狠狠的打他屁股了~~~');
? ? ? //嵌套 if~~~
? ? ? if(score < 30){
? ? ? ? console.log('他媽媽狠狠的打了他爸爸屁股~~~');
? ? ? ? if(score <10){
? ? ? ? ? console.log('不知道還會發(fā)生什么可怕的事情~~!');
? ? ? ? }
? ? ? }
? ? } else if (score >= 60 && score < 80) {
? ? ? console.log('給500塊~~~~');
? ? } else if (score >= 80 && score < 100) {
? ? ? console.log('給1000塊~~~~');
? ? } else {
? ? ? console.log('給10000塊~~~~');
? ? }
? ? console.log('裙姐睡著了~~~');
? ? //3.循環(huán)結(jié)構(gòu)語句
07顯示類型
//1. 什么是類型轉(zhuǎn)換? -- 將 一種類型的數(shù)據(jù) 轉(zhuǎn)成 另外一種 類型
? ? //1.1 轉(zhuǎn)數(shù)值 parseInt? parseFloat Number
? ? //a.parseInt 轉(zhuǎn) 整型數(shù)值
? ? //? ? ? ? ? a1.如果 遇到 小數(shù)字符串,會將 小數(shù)點和小數(shù)部分 去掉,只轉(zhuǎn)換 整數(shù)部分
? ? //? ? ? ? ? a2.如果 轉(zhuǎn)換的 數(shù)據(jù) 不是一個 數(shù)值字符串,就會轉(zhuǎn)換失敗,返回 NaN
? ? //? ? ? ? ? a3.如果 遇到 非數(shù)值,會自動停止轉(zhuǎn)換,只轉(zhuǎn)換非數(shù)值 前面的 數(shù)據(jù)
? ? //? ? ? ? ? a4.如果 最前面是 空格,會 自動 忽略空格,轉(zhuǎn)換后面的數(shù)據(jù)
? ? //? ? ? ? ? a5.如果 中間遇到空格,會自動停止轉(zhuǎn)換,只轉(zhuǎn)換 空格 前面的 數(shù)據(jù)
? ? var num = parseInt('11'); // '11' -> 11
? ? console.log(typeof num); // number
? ? var num = parseInt('11.1'); //'11.1' -> 11
? ? console.log(num);
? ? var num = parseInt('aaaa'); // NaN
? ? console.log(num);
? ? var num = parseInt('12a34'); // 12
? ? console.log(num);
? ? var num = parseInt('a12'); // NaN
? ? console.log(num);
? ? var num = parseInt(' 12'); //12
? ? console.log(num);
? ? var num = parseInt(' 12 34'); //12
? ? console.log(num);
? ? //案例:將 '100px' -> '110px' --------------------------------------
? ? var divWidth = '100px';
? ? divWidth = parseInt(divWidth); //divWidth =? 100
? ? divWidth += 10;// divWidth =? 100 + 10;
? ? divWidth += 'px';// 110 + 'px' -> '110px'
? ? console.log('divWidth=' + divWidth);
? ? //b.parseFloat 轉(zhuǎn)小數(shù)
? ? var num = parseInt('11.1'); // 11
? ? var num = parseFloat('11.1'); // 11.1
? ? console.log(num);
? ? var num = parseFloat('aaaa'); // NaN
? ? console.log(num);
? ? var num = parseFloat('12a34'); // 12
? ? console.log(num);
? ? var num = parseFloat('a12'); // NaN
? ? console.log(num);
? ? var num = parseFloat(' 12'); //12
? ? console.log(num);
? ? //c.Number 轉(zhuǎn) 任何數(shù)值
? ? var num = Number('111000');
? ? console.log(num);
? ? var num = Number('111000.777');
? ? console.log(num);
? ? var num = Number('111000aaa111'); // NaN
? ? console.log(num);
? ? //1.2 轉(zhuǎn)字符串
? ? // 數(shù)據(jù).toString()? String(x)?
? ? //a. 數(shù)據(jù).toString() 可以 用來 將 數(shù)據(jù) 轉(zhuǎn)成 字符串
? ? var num = 11;
? ? console.log(num.toString()); // 11 -> '11'
? ? //注意:數(shù)值直接量 不能 通過 .來調(diào)用 toString()方法,因為 會被當做 小數(shù)點
? ? // console.log(11.toString());
? ? console.log(true.toString());
? ? //b.String(x) 可以用來 將 沒有 toString()方法的 數(shù)據(jù) 轉(zhuǎn)成 字符串,比如:undefined 和 null
? ? // console.log(undefined.toString()); //報錯:Cannot read property 'toString' of undefined
? ? var str = String(undefined);
? ? console.log(str);
? ? var str = String(null);
? ? console.log(str);
? ? //1.3 轉(zhuǎn)布爾值
? ? // Boolean(x)? 用來 將 數(shù)據(jù) 轉(zhuǎn)成 true 或者 false
? ? //? ? ? ? ? ? 會轉(zhuǎn)成 false 的有 8 種: 0 , -0,NaN ,'',undefined , null , false , document.all
? ? //? ? ? ? ? ? 其他的全都轉(zhuǎn)成 true
? ? var isOk = Boolean('false');//true
? ? console.log(isOk);
? ? var isOk = Boolean('小白白'); //true
? ? console.log(isOk);
? ? var isOk = Boolean(Infinity); //true
? ? console.log(isOk);
? ? var isOk = Boolean('\n'); //true
? ? console.log(isOk);