摘要:一彈窗和輸出執(zhí)行順序是從上到下執(zhí)行控制瀏覽器彈出一個(gè)警告框讓計(jì)算機(jī)在頁面中輸出一個(gè)內(nèi)容在中寫一個(gè)內(nèi)容寫可以向中輸出一個(gè)內(nèi)容看我出不出來向控制臺(tái)輸出一個(gè)內(nèi)容作用是向控制臺(tái)輸出一個(gè)內(nèi)容你猜我在哪出來二編寫位置可以將代碼編寫到外部文件中,然后通過
一.彈窗和輸出
**javascript執(zhí)行順序是從上到下執(zhí)行**
1.控制瀏覽器彈出一個(gè)警告框
alert("HelloWord");
2.讓計(jì)算機(jī)在頁面中輸出一個(gè)內(nèi)容在 document中寫一個(gè)內(nèi)容 (write寫)
document.write(); 可以向body中輸出一個(gè)內(nèi)容 document.write("看我出不出來···");
3.向控制臺(tái)輸出一個(gè)內(nèi)容
console.log(); 作用是向控制臺(tái)輸出一個(gè)內(nèi)容 console.log("你猜我在哪出來");
二 .js編寫位置
1.可以將js代碼編寫到外部js文件中,然后通過script標(biāo)簽引入
寫到外部文件中可以在不同的頁面中同時(shí)引用,也可以利用到瀏覽器的緩存機(jī)制
推薦使用方法
2.script標(biāo)簽一旦用于引入外部文 件了,內(nèi)部就不能再編寫代碼了,即使編寫了
瀏覽器也會(huì)忽略
如果需要可以在創(chuàng)建一個(gè)新的script標(biāo)簽用于編寫內(nèi)部代碼
3.可以將js代碼編寫到標(biāo)簽的onclick屬性中
當(dāng)我們點(diǎn)擊按鈕時(shí),js代碼才會(huì)執(zhí)行
雖然可以寫在標(biāo)簽的屬性中,但是他們屬于結(jié)構(gòu)與行為耦合,不方便維護(hù)
可以將js代碼寫在超鏈接的href屬性中,這樣當(dāng)點(diǎn)擊超鏈接時(shí),會(huì)執(zhí)行js代碼
你也點(diǎn)我一下 你也點(diǎn)我一下
三.基本語法
1.js注釋(/**/)
多行注釋,注釋中的內(nèi)容不會(huì)被執(zhí)行,但是可以在源代碼中查看
要養(yǎng)成良好的編寫注釋的習(xí)慣,也可以通過注釋來對代碼進(jìn)行一些簡單的調(diào)試
2.單行注釋(//)
3.JS中嚴(yán)格區(qū)分大小寫
4.JS中每一條語句以分號(hào)(;)結(jié)尾
-如果不寫分號(hào),瀏覽器會(huì)自動(dòng)添加,但是會(huì)消耗一些系統(tǒng)資源
而且有點(diǎn)時(shí)候?yàn)g覽器會(huì)加錯(cuò)分號(hào)
5.JS中會(huì)忽略多個(gè)空格和換行,所以我們可以利用空格和換行對代碼進(jìn)行格式化
四.字面量和變量
1.字面量都是一些不可改變的值
比如:1 2 3 4 5 字面量都是可以的直接使用,但是我們一般都不會(huì)直接使用字面量
變量 變量可以用來保存字面量,而且我們一般都不會(huì)直接使用字面量
變量更加方便我們使用,所以在開發(fā)中都是通過變量去保存一個(gè)字面量 而很少直接使用字面量 可以通過變量對字面量進(jìn)行描述 變量 字面量 x = 1
2.把聲明變量和對該變量賦值一次完成:
var mood(心情) = "happy",age = "22";
3.變量名允許包含字母、數(shù)字、美元符號(hào)和下劃線(但第一個(gè)字符不允許是數(shù)字)。為了讓比較長的變量名更容易閱讀,可以在變量名中的適當(dāng)位置插入下劃線,就像這面這樣:
var my_mood = "happy";
五、標(biāo)識(shí)符
-在js中所有的可以由我們自主命名的都可以稱為標(biāo)識(shí)符
-例如:變量名,函數(shù)名,屬性名都屬于標(biāo)識(shí)符
-命名一個(gè)標(biāo)識(shí)符時(shí)需要遵守如下的規(guī)則:
1.標(biāo)識(shí)符中可以含有字母、數(shù)字、_、$ 2.標(biāo)識(shí)符不能以數(shù)字開頭 3.標(biāo)識(shí)符不能是ES中的關(guān)鍵字或保留字 4.標(biāo)識(shí)符一般都采用駝峰命名法 通常駝峰法格式是函數(shù)名、方法名和對象屬性名命名的首選格式 -首字母小寫,每個(gè)單詞的開頭字母大寫,其余字母小寫 helloworld 駝峰命名法:helloWorld var myMood = "happy"; --注意:js底層保存標(biāo)識(shí)符是實(shí)際上是采用的Unicode編碼, 所以理論上講,所有的utf-8中含有的內(nèi)容都可以作為標(biāo)識(shí)符 a標(biāo)識(shí)符 自己起的名字 var a = 1; 可以含有字母、數(shù)字、_、$ var a_1_$ = 123; console.log(a_1_$); //輸出為123 標(biāo)識(shí)符不能是ES中的關(guān)鍵字或保留字 ES var var = 123; console.log(var); //會(huì)報(bào)錯(cuò)
注意:
var 鋤禾日當(dāng)午 = 789; //千萬不要這么用 console.log(鋤禾日當(dāng)午);
六、字符串
1.數(shù)據(jù)類型指的就是字面量的類型
在js中一共有六中數(shù)據(jù)類型 String 字符串 "123" Number 數(shù)值 123 Boolean 布爾值 true或是false Null 空值 Undefined 未定義 Object 對象
其中String Number Boolean Null Undefined 屬于基本數(shù)據(jù)類型
而Object 屬于引用數(shù)據(jù)類型
2.String字符串
1.-字符串由零個(gè)或多個(gè)字符構(gòu)成,字符包括(但不限制)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和空號(hào) -在js中字串符需要使用引號(hào)引起來 -使用雙引號(hào)或單引號(hào)都可以,但是不要混著用 -引號(hào)不能嵌套,雙引號(hào)不能放雙引號(hào),單引號(hào)不能放單引號(hào), 單引號(hào)里面可以放雙引號(hào),雙引號(hào)里面可以放單引號(hào) 2.在字符串中我們可以使用作為轉(zhuǎn)義字符, 當(dāng)表示一些特殊符號(hào)時(shí)可以使用進(jìn)行轉(zhuǎn)義 "" 表示 "" "" 表示 "" 表示換行 表示制表符(空格) 表示 str ="我說:"今天 天氣真不錯(cuò)""; str="" //輸出字面量 字符串str alert("str"); //輸出變量str alert(str);
3.如果想在上面這條語句中使用單引號(hào),就必須保證字母“n”和“t”之間的單引號(hào)能別當(dāng)成這個(gè)字符串的一部分,這種情況下這個(gè)單引號(hào)需要被看做一個(gè)普通字符,而不是這個(gè)字符串的結(jié)束標(biāo)志,這種情況我們需要對這個(gè)字符進(jìn)行轉(zhuǎn)義,在js里用反斜線對字符串進(jìn)行轉(zhuǎn)義:
var mood = "don"t ask";
4.類似地,如果想用雙引號(hào)來包住一個(gè)本身就包含雙引號(hào)的字符串,就必須用反斜線對字符串中的雙引號(hào)進(jìn)行轉(zhuǎn)義:
var height = "about 5"10" tall"; alert(height);
會(huì)彈出下面:
七、Number
1.在js中所有的數(shù)值都是Number類型
如果想給一個(gè)變量賦一個(gè)數(shù)值,不用限定它必須是一個(gè)整數(shù),js允許使用帶點(diǎn)小數(shù)點(diǎn)的數(shù)值,并且允許任意位小數(shù),這樣的數(shù)稱為浮點(diǎn)數(shù)
var age = 33.25;
也可以使用負(fù)值,在有關(guān)數(shù)值的前面加上一個(gè)減號(hào)(-)表示它是一個(gè)負(fù)數(shù):
var temperture = -20;
js也支持負(fù)數(shù)浮點(diǎn)數(shù)
var temperture = -20.690;
包括整數(shù)和浮點(diǎn)數(shù)(小數(shù))
//數(shù)字123 var a = 123; //字符串123 var a = "123"; console.log(typeof a); /* * 可以使用一個(gè)運(yùn)算符typeof * 來檢查一個(gè)變量的類型 * 語法:typeof 變量 * 檢查數(shù)值時(shí),會(huì)返回number * 檢查字符串時(shí),會(huì)返回string */
2.js中可以表示的數(shù)字的最大值 (最大值:1.7976931348623157e+308)
Number.MAX_VALUE 1.7976931348623157e+308 Number.MIN_VALUE 大于0的最小值 5e-324 (0.后面的三百位數(shù)) console.log(Number.MAX_VALUE); //會(huì)輸1.7976931348623157e+308 a = Number.MAX_VALUE*Number.MAX_VALUE; a = "abc" * "bcd" //會(huì)輸出NaN a = NaN; //不加引號(hào) 輸出number 加了會(huì)輸出string a = Number.MIN_VALUE; //會(huì)輸出Infinity console.log(a);
3.如果使用Number表示的數(shù)字超過了最大值,則會(huì)返回一個(gè)Infinity
Infinity 表示正無窮 -Infinity 表示正無窮 使用typeof檢查Infinity也會(huì)返回Number
NaN 是一個(gè)特殊的數(shù)字,表示Not A Number
使用typeof檢查NaN也會(huì)返回Number // 在js中整數(shù)的運(yùn)算基本可以保證精確 var c = 1+1; //如果使用js進(jìn)行浮點(diǎn)運(yùn)算,可能得到一個(gè)不精確的結(jié)果 //所以千萬不要使用js進(jìn)行對精確度要求比較高的運(yùn)算 var c = 0.1 + 0.2; console.log(c);
八、布爾值
Boolaen 布爾值
布爾值只有倆個(gè),主要用來做邏輯判斷
true -表示真
false -表示假
使用typeof檢查一個(gè)布爾值時(shí),會(huì)返回boolean
var bool = true; console.log(typeof true);
九、Null和Undefined
1.Null類型的值只有一個(gè),就是 Null
null這個(gè)值專門用來表示一個(gè)為空的對象 使用typeof檢查一個(gè)null時(shí),會(huì)返回object
2.Undefined(未定義)類型的值只有一個(gè),就undefined
當(dāng)聲明一個(gè)變量,但是并不給變量賦值時(shí),它的值就是undefined 使用typeof檢查一個(gè)undefined時(shí)也會(huì)返回undefined var a = null; console.log(typeof a); //會(huì)輸出object var b; console.log(b); //會(huì)輸出undefined
十、強(qiáng)制類型轉(zhuǎn)換-string
1.強(qiáng)制類型轉(zhuǎn)換
- 指將一個(gè)數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為其他的數(shù)據(jù)類型 - 類型轉(zhuǎn)換主要指,將其他的數(shù)據(jù)類型,轉(zhuǎn)換為 String Number Boolean
將其他類型轉(zhuǎn)換為String
方式一:
- 調(diào)用被轉(zhuǎn)換數(shù)據(jù)類型的toString()方法 - 該方法不會(huì)影響到原變量,它會(huì)將轉(zhuǎn)換的結(jié)果返回
-但是要注意:null和 undefined這倆個(gè)值沒有toString()方法 如果調(diào)用他們的方法會(huì)報(bào)錯(cuò) var a = 123; //調(diào)用a的toString()方法 //調(diào)用xxx的yyy()方法,就是xxx.yyy() var a = a.toString(); console.log(a); var a = true; //先寫一個(gè)類型 // var a = a.toString(); //在寫a.toString() 可以轉(zhuǎn) console.log(a); a = null; //空值 // a = a.toString(); //不能轉(zhuǎn) 會(huì)報(bào)錯(cuò) console.log(a); a = undefined; // a = a.tostring(); //不能轉(zhuǎn) 會(huì)報(bào)錯(cuò) console.log(a);
方式二:
-調(diào)用 String()函數(shù),并將轉(zhuǎn)換的數(shù)據(jù)作為參數(shù)傳遞給函數(shù) -使用String()函數(shù)做強(qiáng)制類型轉(zhuǎn)換時(shí) 對于 Number 和 Boolean實(shí)際上調(diào)用的就是toString()方法 但是對于null 和 undefined就不會(huì)調(diào)用toString()方法 它會(huì)將(字面量)null直接轉(zhuǎn)換為(字符串)"null" 它會(huì)將(字面量)undefined直接轉(zhuǎn)換為(字符串)"undefined" a = 123; //調(diào)用tostring()函數(shù),來將a轉(zhuǎn)換為字符串 (轉(zhuǎn)誰就把誰寫在括號(hào)里面) a = String(a); //S一定要大寫 a = null; a = String(a); //不會(huì)報(bào)錯(cuò) a = undefined; a = String(a); //不會(huì)報(bào)錯(cuò) console.log(typeof a); console.log(a);
十一、強(qiáng)制類型轉(zhuǎn)換-Number
1.將其他的數(shù)據(jù)轉(zhuǎn)換為Number
轉(zhuǎn)換方法一: 使用Number()函數(shù) -字符串-->(轉(zhuǎn)換)數(shù)字 1.如果是純數(shù)字的字符串,則直接將其轉(zhuǎn)換為數(shù)字 2.如果字符串中有非數(shù)字的內(nèi)容,則轉(zhuǎn)換為NaN 3.如果字符串是一個(gè)空串或者是一個(gè)全是空格的字符串,則轉(zhuǎn)換為0 -布爾(boolean)-->(轉(zhuǎn)換)數(shù)字 true 轉(zhuǎn)換為1 false 轉(zhuǎn)換為0 -Null-->數(shù)字==0 -undefined-->數(shù)字==NaN //轉(zhuǎn)換方式一: var a = "123"; //調(diào)用Number()函數(shù)來將a轉(zhuǎn)換為Number類型 a = Number(a); //括號(hào)里面要寫數(shù)值 a = true; //true的類型是boolean a = Number(a); // 輸出為1 a = false; //false的類型是boolean a = Number(a); // 輸出為0 a = null; a = Number(a); // 輸出為0 a = undefined; a = Number(a); // 輸出為NaN
轉(zhuǎn)換方式二:
-這種方式專門用來對付字符串 -parseInt()把一個(gè)字符串轉(zhuǎn)換為一個(gè)整數(shù) -parseFloat() 把一個(gè)字符串轉(zhuǎn)換為一個(gè)浮點(diǎn) //轉(zhuǎn)換方式二: a = "123px"; //調(diào)用parseInt()函數(shù)將a轉(zhuǎn)換為Number /* parseInt()可以將一個(gè)字符串中的有效的整數(shù)內(nèi)容取出來,(px不是數(shù)字所以不讀,就只剩下數(shù)字) 然后轉(zhuǎn)換為Number (如果第一個(gè)是英文字母 轉(zhuǎn)換的就是NaN(包括點(diǎn).也在內(nèi) .以后的東西也不讀)) */ a = parseInt(a); /* parseFloat()作用和parseInt()類似,不同的是它可以獲得有效的小數(shù) */ a = "123.456px"; a = parseFloat(a); //輸出123.456 /* 如果對非String使用parseInt()或parseFloat() 它會(huì)現(xiàn)將其轉(zhuǎn)換為String然后再操作 */ a = true; // a = parseInt(a); // 輸出為NaN a = parseFloat(a); console.log(typeof a); console.log(a);
十二、其他進(jìn)制的數(shù)字
1.在js當(dāng)中,如果需要表示16進(jìn)制的數(shù)字,則需要以0x開頭
如果需要表示8進(jìn)制的數(shù)字,則需要以0開頭 如果需要表示2進(jìn)制的數(shù)字,則需要以0b開頭,但是不是所有的瀏覽器都支持 //16進(jìn)制數(shù)字 a = 0xDD; //8進(jìn)制數(shù)字 a = 056; //2進(jìn)制數(shù)字 a = 0b10; console.log(a); var height = "about 5"10" tall"; alert(height);
十三、轉(zhuǎn)換為boolean
將其數(shù)據(jù)類型轉(zhuǎn)換為boolean
一種方法:使用boolean()函數(shù) -數(shù)字--->布爾 除了0和NaN,其余的都是true -字符串--->布爾 除了空串,其余的都是true -null和undefined都會(huì)轉(zhuǎn)換為false -對象也會(huì)轉(zhuǎn)換為true var a =123; //輸出為true a = -123; //輸出為true a = 0; //輸出為fals a = Infinity; //輸出為true Infinity無窮 a = NaN; //輸出為true //調(diào)用Boolean()函數(shù)來將a轉(zhuǎn)換為布爾值 a = Boolean(a); a = "hello"; //本身輸出為string a = boolean(a); //加上boolean()以后輸出為true a = "flase"; a = boolean(a); //輸出為true a = "null"; a = boolean(a); //輸出為flase console.log(typeof a); console.log(a);
十四、算數(shù)運(yùn)算符
1.運(yùn)算符也叫操作符
通過運(yùn)算符可以對一個(gè)或多個(gè)值進(jìn)行運(yùn)算,并獲取運(yùn)算結(jié)果 比如:tupeof就是運(yùn)算符,可以來獲得一個(gè)值得類型 它會(huì)將該值的類型以字符串的形式返回 number string boolean underfined objuct
2.算數(shù)運(yùn)算符
當(dāng)對非Number類型的值進(jìn)行運(yùn)算時(shí),會(huì)將這些值轉(zhuǎn)換為Number然后在運(yùn)算 任何值和NaN做運(yùn)算都得NaN + +可以對兩個(gè)值進(jìn)行加法運(yùn)算,并將結(jié)果返回 如果對倆個(gè)字符串進(jìn)行加法運(yùn)算,則會(huì)做拼串 會(huì)將倆個(gè)字符串拼接為一個(gè)字符串,并返回 任何的值和字符串做加法運(yùn)算,都會(huì)先轉(zhuǎn)換為字符串,然后在和字符串做拼串的操作轉(zhuǎn)成字符串 — 可以對兩個(gè)值進(jìn)行減法運(yùn)算,并將結(jié)果返回 轉(zhuǎn)成number * 可以進(jìn)行乘法運(yùn)算 / 可以進(jìn)行除法運(yùn)算 % %取模運(yùn)算(取余數(shù))
//加法例子:
var a = 123;
var result = typeof a; console.log(typeof result); //輸出為string a + 1; //輸出為123 result = a + 1; //輸出為124 result = 35 + 35; //輸出為70 result = true + 35; //輸出為36 result = true + false; //輸出為1 true為1 false為0 result = 2 + null; //輸出為2 null為 result = 2 + NaN; //輸出為NaN result = "123" + "456"; //輸出為123456 倆個(gè)字符串相加 數(shù)字連在一起 result = "鋤禾日當(dāng)午" //如果想把詩寫的工整就這樣寫 也可以這樣寫"鋤禾日當(dāng)午,汗滴禾下土,誰知盤中餐,粒粒皆辛苦" +"汗滴禾下土"+ "誰知盤中餐"+ "粒粒皆辛苦"; result = 123 + "hello"; //輸出為123hello //任何值和字符串相加都會(huì)轉(zhuǎn)換為字符串,并做拼串操作 console.log(result); //number轉(zhuǎn)換為string /* 我們可以利用這一點(diǎn),來將一個(gè)任意的數(shù)據(jù)類型轉(zhuǎn)換為string 我們只需要為任意的數(shù)據(jù)類型加一個(gè)""即可將其轉(zhuǎn)換為string 這是一種隱式的類型轉(zhuǎn)換,由瀏覽器自動(dòng)完成,實(shí)際上它也是調(diào)用string()函數(shù) */ var c = 123; c = c + "h"; console.log(typeof c); console.log(c); console.log("c = " +c); //輸出為c=123h //小練習(xí) result = 1 + 2 + "3"; //輸出為33 1+2=3 字符串相拼 33 console.log("result="+result); //輸出為 result=33 result = "45" + 2 + 3; //輸出為4523 console.log(result); //減法例子: result = 100 - 5; //輸出為result =95 result = 100 - true; //輸出為99 true為1 result = 100 - "1"; //輸出為99 把"1"轉(zhuǎn)換為number 1 相當(dāng)于100-1 console.log("result = "+result); //乘法例子 result = 2 * 2; //輸出為result=4 result = 2 * "8"; //輸出為result=16 result = 2 * undefined; //輸出為result=NaN result = 2 * null; //輸出為result=0 null=0 console.log("result = "+result); //除法例子 result = 4 / 2; //輸出為result=2 result = 3 / 2; //輸出為result=1.5 /* 任何值做- * / 運(yùn)算時(shí)都會(huì)自動(dòng)轉(zhuǎn)換為Number 我們可以利用這一特點(diǎn)做隱式的類型轉(zhuǎn)換 可以通過為一個(gè)值 —0 *1 /1 來將其轉(zhuǎn)換為Number */ console.log("result = "+result); var d = "123"; d = d - 1; //輸出為122 console.log(typeof d); console.log(d); //%例子 result = 9 % 3; //9除以3 等于3余0 相除取余數(shù) 輸出為0 result = 9 % 4; //9除以4 等于2余1 相除取余數(shù) 輸出為1 console.log("result = "+result);
十五、一元運(yùn)算符
一元運(yùn)算符,只需要一個(gè)操作數(shù) + 正號(hào) -正號(hào)不會(huì)對數(shù)字產(chǎn)生任何影響 — 負(fù)號(hào) -負(fù)號(hào)可以對數(shù)字進(jìn)行負(fù)號(hào)的取反 —對于非number類型的值 它會(huì)將先轉(zhuǎn)換為number,然后再運(yùn)算 可以對一個(gè)其他的數(shù)據(jù)類型使用+,來將其轉(zhuǎn)換為number 它的原理和number()函數(shù)一樣 var a = 123; a = +a; //輸出為123 a = -a; //輸出為-123 console.log("a = "+a); a = true; // 輸出為boolean a = -1 a = -a; // 輸出為number a = -1 a = "123"; // 輸出為 a = 123 string a = +a; // 輸出為 a = 123 number console.log("a = "+a); console.log(typeof a); var result = 1 + +"2" + 3; //輸出為6 +"2"字符串2轉(zhuǎn)換為number2 1+2+3=6 console.log("result = "+result);
十六、自增和自減
自增++
—通過自增可以使變量在自身的基礎(chǔ)上增加1 —對于一個(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自增1 a++; //輸出為a=2 ++a; //輸出為a=2 console.log("a = "+a); var a = 1; console.log(a++); //輸出為1 var a = 1; console.log(++a); //輸出為2 var a = 1; console.log("++a = "+ ++a); //輸出為++a=2 console.log("a++ = "+ a++); //輸出為++a=1 console.log("a = "+a); //輸出為a=2 var c = 10; //第一次c++ 是在10的基礎(chǔ)上自增 c++; //第二次c++ 是在11的基礎(chǔ)上自增 c++; console.log(c++); var d = 20; console.log(++d); //輸出為21 console.log(++d); //輸出為22 //d++先用后加 ++d先加后用 //d++=20 ++d=22 d=22 var d = 20; var result = d++ + ++d + d; console.log("result ="+result); //輸出為result =64 var d = 30; var result = ++d + d++ + d; //31 32 31 console.log("result ="+result); //輸出為result =94 var d = 30; d = d++; /* 相當(dāng)于 d=30 var e = d++; d = e */ console.log("d ="+d); //輸出為d =30 //自減例子 var num = 10; num--; //輸出為num=9 --num; //輸出為num=9 console.log("num ="+num); var num = 10; console.log(num--); //輸出為10 console.log(--num); //輸出為9 var d = 10; result = num-- + --num + d; console.log("result ="+result); //輸出為24
十七、自增練習(xí)
//d++先用后加 ++d先加后用
var n1 = 10 , n2 = 20; var n = n1++; //n1 = 11 n1++ = 10 console.log("n="+n); //n=10 console.log("n1="+n1); //n1=11 n = ++n1; //n1=12 ++n1=12 console.log("n="+n); //n=12 console.log("n1="+n1); //n1=12 //d--先減后用 --d返回原值 n = n2--; //n2=19 n2--=20 console.log("n="+n); //n= 20 console.log("n12="+n2); //n2=19 n = --n2; //n2=18 --n2=18 console.log("n="+n); //n=18 console.log("n12="+n2); //n2=18
十八、邏輯運(yùn)算符
JS中為我們提供了三種邏輯運(yùn)算法
! 非 — !可以用來對一個(gè)值進(jìn)行非運(yùn)算 — 所謂非運(yùn)算就是值對一個(gè)布爾值進(jìn)行取反操作 flas變etrue , true變flase — 如果對一個(gè)值進(jìn)行倆次取反,它不會(huì)變化 — 如果對非布爾值進(jìn)行元素,則會(huì)將其轉(zhuǎn)換為布爾值,然后在取反 所以我們可以利用該特點(diǎn),來將一個(gè)其他的數(shù)據(jù)類型轉(zhuǎn)換為布爾值 可以為一個(gè)任意數(shù)據(jù)類型去倆次反,來將其轉(zhuǎn)換為布爾值 原理和boolean()函數(shù)一樣 $$ 與 — &&可以對符號(hào)倆側(cè)的值進(jìn)行與運(yùn)算并返回結(jié)果 — 運(yùn)算規(guī)則: — 倆個(gè)值中只要有一個(gè)值是flase就返回flase 只有倆個(gè)值都是true時(shí),才會(huì)返回true — js中的“與”屬于短路的與 如果第一個(gè)值為flase,則不會(huì)看第二個(gè)值 || 或 — ||可以對符號(hào)倆側(cè)的值進(jìn)行或運(yùn)算并返回結(jié)果 — 運(yùn)算規(guī)則: — 倆個(gè)值中只有一個(gè)true,就返回true 如果倆個(gè)值都是flase,才返回flase —js中的“或”屬于短路的或 如果對一個(gè)值為true,則不會(huì)檢查第二個(gè)值
// !
var a = true; //對a進(jìn)行非運(yùn)算 !a; //輸出為true a = !a; //輸出為flase 取反一次是flase a = !!a; // 取反二次是flase console.log("a ="+a); var b = 10; //輸出為number b = !b; //輸出為boolean b=false b = !!b; //輸出為boolean b=true console.log("b ="+b); console.log(typeof b); // && //如果倆個(gè)值都是true則返回true var result = true && true; // 輸出為true //只要有一個(gè)false就返回false var result = true && false; //輸出為false var result = false && true; //輸出為false var result = false && false; //輸出為false console.log("result ="+result); //第一個(gè)值為true,會(huì)檢查第二個(gè)值 // true && alert("看我出不出來!!"); //第一個(gè)值為false,不會(huì)檢查第二個(gè)值 // false && alert("看我出不出來!!"); // || //如果倆個(gè)值都是false則返回false resule = false || false; //輸出為false //只要有一個(gè)true就返回true resule = true || false; //輸出為true resule = false || true; //輸出為true resule = true || true; //輸出為true console.log("resule ="+resule); //第一個(gè)值為false,則會(huì)檢查第二個(gè)值 false || alert("123"); //會(huì)有彈窗 //第一個(gè)值為true,則不會(huì)檢查第二個(gè)值 true || alert("123"); //不會(huì)有彈窗
十九、非布爾值的非與或運(yùn)算
&& || 非布爾值的情況 — 對于非布爾值進(jìn)行與或運(yùn)算時(shí) 會(huì)向?qū)⑵滢D(zhuǎn)換為布爾值,然后在運(yùn)算,并且返回原值 — 與運(yùn)算&& — 如果第一個(gè)值為true,則必然返回第二個(gè)值 — 如果第一個(gè)值為false,則直接返回第一個(gè)值 — 或運(yùn)算 || — 如果第一個(gè)值為true,則直接返回第一個(gè)值 — 如果第一個(gè)值為false,則返回第二個(gè)值 // true && true // 與運(yùn)算:如果倆個(gè)值都為true,則返回后邊的值 var result = 1 && 2; //輸出為2 //與運(yùn)算:如果倆個(gè)值中有false,則返回靠前的false //false && true var result = 0 && 2; //輸出為0 var result = 2 && 0; //輸出為0 //false && false var result = NaN && 0; //輸出為NaN var result = 0 && NaN; //輸出為0 // true || true //如果第一個(gè)值為true,則直接返回第一個(gè)值 result = 1 || 2; //輸出為1 result = 2 || 1; //輸出為2 result = 2 || NaN; //輸出為2 //如果第一個(gè)值為false,則直接返回第二個(gè)值 result = NaN || 1; //輸出為1 result = NaN || 0; //輸出為0 result = "" || "hello"; //輸出為hello result = -1 || "你好"; //輸出為-1 console.log("result ="+result);
二十、賦值運(yùn)算符
=
可以將符號(hào)右側(cè)的值賦值給符號(hào)左側(cè)的變量
var a = 123;
+=
a += 5 等價(jià)于 a = a + 5a -= 5 等價(jià)于 a = a - 5
*=
a = 5 等價(jià)于 a = a 5
/=
a /= 5 等價(jià)于 a = a / 5
%= (余數(shù))
a %= 5 等價(jià)于 a = a % 5
var a = 10; a = a + 5; //15 a += 5; //輸出為15 和a = a + 5;是一樣的 a -= 5; //輸出為5 10-5=5 a *= 5;//輸出為50 5*10=50 a %= 3; //輸出為1 10除以3等于3余1 console.log("10 ="+10);
二十一、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符
通過關(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)
— 判斷符號(hào)左側(cè)的值是否小于右側(cè) — 如果關(guān)系成立,返回 true,如果關(guān)系成立則返回 false
<= 小于等于號(hào)
— 判斷符號(hào)左側(cè)的值是否小于或等于右側(cè)的值
非數(shù)值的情況
—對于非數(shù)值進(jìn)行比較時(shí),會(huì)將其轉(zhuǎn)換為數(shù)字然后在比較 — 特殊情況: 如果符號(hào)倆側(cè)的值都是字符串時(shí),不會(huì)將其轉(zhuǎn)換為數(shù)字進(jìn)行比較 而會(huì)分別比較字符串中字符的Unicode編碼 var result = 5 > 10; //輸出為false 不成立 result = 5 > 4; //輸出為true 成立 resulr = 5 > 5; //輸出為false 不成立 resulr = 5 >= 5; //輸出為true 成立 result = 5 >= 4; //輸出為true 成立 result = 5 < 4; //輸出為false不成立 resulr = 4 <= 4; //輸出為true 成立 console.log("result ="+result); //非數(shù)值的情況 console.log(1>true); //false console.log(1>true); //true console.log(1 > "0"); //true console.log(10 > null); //true null轉(zhuǎn)換為數(shù)字0 //任何值和NaN做任何比較都是false console.log(10 <= "hello"); //false "hello"轉(zhuǎn)換為數(shù)字NaN console.log(true > false); // //如果比較的倆個(gè)字符串型的數(shù)字,可能會(huì)得到不可預(yù)期的結(jié)果 console.log("1" < "5"); //true console.log("11" < "5"); //true(比較第一位 1和5做比較) //注意:在比較倆個(gè)字符串型的數(shù)字時(shí),一定一定一定要轉(zhuǎn)型 console.log("11" < +"5"); //false //比較倆個(gè)字符串時(shí),比較的是字符串的字符編碼 console.log("a" < "b"); //true //比較字符編碼時(shí)是一位一位的進(jìn)行比較 console.log("abc" < "a"); //true //如果倆位一樣,則比較下一位,所以借用它來對英文進(jìn)行排序 console.log("bbc" < "b"); //false console.log("abd" < "bad") //true //比較中文時(shí)沒有意義 console.log("戒" > "我"); //true
二十二、Unicode編碼表
//使用十六進(jìn)制計(jì)算器 /* 在字符串中使用轉(zhuǎn)義字符輸入U(xiǎn)nicode編碼表 u四位編碼 */ console.log("u0031"); //輸出為1 console.log("u2620"); //輸出為骷髏頭☠
⚀
二十三、相等運(yùn)算符
相等運(yùn)算==: 相等運(yùn)算符用來比較倆個(gè)值是否相等 如果相等會(huì)返回true,否則會(huì)返回false 使用==來做相等運(yùn)算 —當(dāng)使用==來比較倆個(gè)值時(shí),如果值的類型不同 則會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,將其轉(zhuǎn)換為相同的類型 然后再比較 不相等運(yùn)算!=: 不相等用來判斷倆個(gè)值是否不相等,如果不相等返回true,否則返回false — 使用!=來做不相等運(yùn)算 — 不相等也會(huì)對變量進(jìn)行自動(dòng)的類型轉(zhuǎn)換,如果轉(zhuǎn)換后相等也會(huì)返回false 全等運(yùn)算===: — 用來判斷倆個(gè)值是否全等,它和相等類似,不同的是它不會(huì)做自動(dòng)的類型轉(zhuǎn)換 如果來個(gè)值得類型不同,直接返回false 不全等!== — 用來判斷倆個(gè)值是否不全等,和不等類似,不同的是它不會(huì)做自動(dòng)類型轉(zhuǎn)換 如果來個(gè)值得類型不同,直接返回true //相等運(yùn)算== console.log(1 == 1); //輸出為true var a = 10; console.log(a == 4); //輸出為false 10不等于4 console.log("1" == 1); //輸出為true 字符串1和數(shù)字1相等 console.log(true == "1"); //輸出為true console.log(true == "hello"); //輸出為false console.log(null == 0); //輸出為false console.log(nill == undefined); //輸出為true /* undefined 衍生自 null 所以這倆個(gè)值做相等判斷時(shí),會(huì)返回true */ console.log(unsefined == null); //輸出為true /* NaN不和任何值相等 包括他本身 */ console.log(NaN == "1"); //輸出為false var b = NaN; //NaN不和任何值相等 所以下面的這個(gè)方法行不通 // console.log(b == NaN); 輸出為false /* 可以通過isNaN()函數(shù)來判斷一個(gè)值是否是NaN 如果該值是NaN則返回true,否則會(huì)返回false */ console.log(isNaN(b)); //輸出為true //不相等運(yùn)算!= console.log(10 != 5); //輸出為true console.log(10 != 10); //輸出為false console.log("abcd" != "abcd"); //輸出為false console.log("1" != 1); ////輸出為false //全等運(yùn)算=== console.log("123" === 123); //輸出為false console.log(nill === undefined); //輸出為false //不全等!== console.log(1 !== "1"); //輸出為true
二十四、條件運(yùn)算符
條件運(yùn)算符也叫三元運(yùn)算符 語法: 條件表達(dá)式?語句1:語句2; — 執(zhí)行的流程: 條件運(yùn)算符在執(zhí)行時(shí),首先對條件表達(dá)式進(jìn)行求值, 如果該值為true,則執(zhí)行語句1,并返回執(zhí)行結(jié)果 如果該值為false,則執(zhí)行語句2,并返回執(zhí)行結(jié)果 如果條件的表達(dá)式的求值結(jié)果是一個(gè)非布爾值, 會(huì)將其轉(zhuǎn)換為布爾值然后在運(yùn)算
二十五、運(yùn)算符的優(yōu)先級
,運(yùn)算符 使用,可以分割多個(gè)語句,一般可以在聲明多個(gè)變量時(shí)使用 //使用,運(yùn)算符同時(shí)聲明多個(gè)變量 // var a , b ,c; //可以聲明多個(gè)變量并賦值 var a=1,b=2,c=3; alert(b); //彈窗為2 就和數(shù)學(xué)中一樣,在js運(yùn)算符也有優(yōu)先級 比如:先乘除 后加減 在js中有一個(gè)運(yùn)算符優(yōu)先級的表 在表中越靠上優(yōu)先級越高,優(yōu)先級越高越優(yōu)先計(jì)算 如果優(yōu)先級一樣,則從左往右計(jì)算 但是這個(gè)表我們不需要記憶,如果遇到優(yōu)先級不清楚 可以使用()來改變 var result = 1 + 2 * 3; console.log("result ="+result); //輸出為7 如果||的優(yōu)先級高,或者倆個(gè)一樣高,則應(yīng)該返回3 如果與的優(yōu)先級高,則應(yīng)該返回1 var result = 1 || 2 && 3; console.log("result ="+result); //輸出為1
二十六、代碼塊
我們的語句是由一條一條語句構(gòu)成的 語句是按照自上向下的順序一條一條執(zhí)行的 在js中可以使用{}來為語句進(jìn)行分組 同在一個(gè){}中的語句我們稱為是一組語句 它們要么執(zhí)行,要么都不執(zhí)行 一個(gè){}中的語句我們也稱為代碼塊 在代碼塊的后面不用在編寫;了 js中的代碼塊,只具有分組的作用,沒有其他的用途 代碼塊內(nèi)部的內(nèi)容,在外部是完全可見的 { alert("hello"); console.log("你好"); document.write("語句"); } console.log("a ="+a); //可以執(zhí)行
二十七、if語句(一)
流程控制語句: — js中的程序是從上到下一行一行執(zhí)行的 — 通過流程控制語句可以控制程序執(zhí)行流程 使流程可以根據(jù)一定的條件來選擇執(zhí)行 — 語句分類: 1.條件判斷語句 2.條件分支語句 3.循環(huán)語句 1.條件判斷語句: — 使用條件判斷語句可以在執(zhí)行某個(gè)語句之前進(jìn)行判斷 如果條件成立才會(huì)執(zhí)行語句,條件不成立則語句不會(huì)執(zhí)行 — if語句 — 語法一: if(條件表達(dá)式){ 語句.... } if語句在執(zhí)行時(shí),會(huì)先對條件表達(dá)式進(jìn)行求值判斷 如果條件表達(dá)式的值為true,則執(zhí)行if后的語句 如果條件表達(dá)式的值為false,則不會(huì)執(zhí)行if后的語句 if語句只能控制緊隨其后的那個(gè)語句 如果希望if語句可以控制多條語句 可以將這些語句統(tǒng)一放到代碼塊中{} if語句后的代碼塊不是必須的,但是在開發(fā)中盡量寫上代碼塊,即使if后只有一條語句 if(true) alert("你猜我出來嗎"); //條件成立都執(zhí)行 var a = 11; if(a > 10) { alert("a比1大~~~"); alert("誰也管不了我"); } var a = 15; if(a > 10 && a <= 20) { alert("a大于10,并且a小于等于20"); //成立 }
二十八、if語句(二)
if語句 語法二: if(條件語句){ 語句..... } elae{ 語句..... } if...else...語句... 當(dāng)該語句執(zhí)行時(shí),會(huì)先對if后的條件表達(dá)式進(jìn)行求值判斷 如果該值為true,則執(zhí)行if后的語句 如果該值為false,則執(zhí)行else后的語句 語句三: if(條件語句){ 語句.... }else if(條件語句){ 語句.... }else if(條件語句){ 語句.... }elae{ 語句..... } if...else if...else 當(dāng)該語句執(zhí)行時(shí),會(huì)從上到下依次對條件表達(dá)式進(jìn)行求值判斷 如果該值為true,則執(zhí)行當(dāng)前語句 如果該值為false,則繼續(xù)向下判斷 如果所有的條件都不滿足,則執(zhí)行最后一個(gè)else后的語句 該語句中,只會(huì)
//方法一
var age = 60; if(age >= 60){ alert("你已經(jīng)退休了"); } else{ alert("你還沒有退休"); }
//方法二
var age = 90;
if(age > 100 && age <= 30){ alert("活著挺沒意思"); }else if(age > 80){ alert("你也老大不小了"); }else if(age > 60){ alert("你也退休了"); }else if(age > 30){ alert("你已經(jīng)中年了"); }else if(age > 17){ alert("你已經(jīng)成年了"); }else{ alert("你還是個(gè)孩子"); }
二十九、if練習(xí)(一)
從鍵盤輸入小明的期末成績 當(dāng)成績?yōu)?00時(shí),獎(jiǎng)勵(lì)一倆BMW 當(dāng)成績?yōu)閇80-99]時(shí),獎(jiǎng)勵(lì)一臺(tái)iphone15s 當(dāng)成績?yōu)閇60-80]時(shí),獎(jiǎng)勵(lì)一本參考書 其他時(shí),什么獎(jiǎng)勵(lì)也沒有 prompt()可以彈出一個(gè)提示框,該提示框中會(huì)帶有一個(gè)文本框 用戶可以在文本框中輸入一段內(nèi)容,該函數(shù)需要一個(gè)字符串作為參數(shù) 該字符串將會(huì)作為提示框的提示文字 用戶輸入的內(nèi)容將會(huì)作為函數(shù)的返回值返回,可以定義一個(gè)變量來接收該內(nèi)容
//score就是小明的期末成績
var score = prompt("請輸入小明的期末成績(0-100):");
//判斷值是否合法 (大于100 或則 小于0 或則 不是數(shù)字 都要拉出去斃了 )
if(score > 100 || score < 0 || isNaN(score)){
alert("拉出去斃了");
}
else{
//根據(jù)score的值來決定小明什么獎(jiǎng)勵(lì) if(score == 100){ alert("獎(jiǎng)勵(lì)一倆BMW"); } else if(score >= 80){ alert("獎(jiǎng)勵(lì)一臺(tái)iphone15s"); } else if(score >= 60){ alert("獎(jiǎng)勵(lì)一本參考書"); } else{ alert("什么獎(jiǎng)勵(lì)也沒有"); }
}
三十、if練習(xí)(二)
/* 大家都知道,男大當(dāng)婚女大當(dāng)嫁,那么女方家長要嫁女兒,當(dāng)然要提出一定的條件 高:180cm以上, 富1000萬以上, 帥500以上 如果三個(gè)條件同事滿足,則"我一定要嫁給你" 如果三個(gè)條件有為真的情況,則:"嫁吧,比上不足,比下有余" 如果三個(gè)條件都不滿足,則:"不嫁" */ var height = prompt("請輸入你的身高(cm):"); var money = prompt("請輸入你的財(cái)富(萬):"); var face = prompt("請輸入你的顏值(px):"); // alert(height+","+money+","+face); //如果三個(gè)條件同事滿足,則"我一定要嫁給你"(同時(shí)滿足用于&&) if(height > 180 && money > 1000 && face > 500){ alert("我一定要嫁給你"); }else if(height > 180 || money > 1000 || face > 500){ //如果三個(gè)條件有為真的情況(有一個(gè)滿足用或||),則:"嫁吧,比上不足,比下有余" alert("嫁吧,比上不足,比下有余"); }else{ alert("不嫁"); }
三十一、if練習(xí)(三)
編寫程序,由鍵盤輸入三個(gè)整數(shù)分別存入變量num1,num2,num3
對他們進(jìn)行排序,并且從小到大輸出
//獲取用戶的三個(gè)數(shù) //prompt()函數(shù)的返回值是string類型的 //在prompt前加+轉(zhuǎn)換為number var num1 = +prompt("請輸入第一個(gè)數(shù)"); var num2 = +prompt("請輸入第二個(gè)數(shù)"); var num3 = +prompt("請輸入第三個(gè)數(shù)"); alert(typeof num1); if(num1 < num2 && num1 < num3){ //num1最小 比較num2 和 num3 if(num2 < num3){ //num1 num2 num3 alert(num1+","+num2+","+num3); }else{ //num1 num3 num2 alert(num1+","+num3+","+num2); } }else if(num2 < num1 && num2 < num3){ //num2最小 比較num1 和num3 if(num1 < num3){ //num2 num1 num3 alert(num2+","+num1+","+num3); }else{ //num2 num3 num1 alert(num2+","+num3+","+num1); } }else{ //num3最小 比較num1 和num2 if(num1 < num2){ //num3 num1 num2 alert(num3+","+num1+","+num2); }else{ //num3 num2 num1 alert(num3+","+num2+","+num1); } }
三十二、條件分支語句
條件分支語句也叫switch語句 語法: switch(條件表達(dá)式){ case 表達(dá)式: 語句... break; case 表達(dá)式: 語句... break; case 表達(dá)式: 語句... break; defsult: 語句... } 執(zhí)行流程: switch...case...語句 在執(zhí)行時(shí)會(huì)依次將case后的表達(dá)式的值和switch后的條件表達(dá)式的值進(jìn)行全等比較 如果比較結(jié)果為true,則從當(dāng)前case處開始執(zhí)行代碼 當(dāng)前case后的所有代碼都會(huì)被執(zhí)行,我們可以在case的后面跟著一個(gè)break關(guān)鍵字 這樣可以確保只會(huì)執(zhí)行當(dāng)前case后的語句,而不會(huì)執(zhí)行其他的case 如果比較結(jié)果為false,則繼續(xù)向下比較 如果所有的比較結(jié)果都為false,則只執(zhí)行default后的語句 switch語句和if語句的功能實(shí)際上有重復(fù)的,使用switch可以實(shí)現(xiàn)if的功能 同樣使用if也可以實(shí)現(xiàn)switch的功能,所以我們使用時(shí),可以根據(jù)自己的習(xí)慣選擇 //根據(jù)num的值,輸出對應(yīng)的中文 var num = abc; /* if(num == 1){ console.log("壹"); }else if(num == 2){ console.log("貳"); } */ // 這倆中方法差不多 switch(num){ case 1: console.log("壹"); //使用break可以來退出switch語句 break; case 2: console.log("貳"); break; case 3: console.log("叁"); break; default : console.log("非法數(shù)字"); break; }
三十二、條件分支語句練習(xí)(二)
從鍵盤接收整數(shù)參數(shù),如果該數(shù)為1-7,打印對應(yīng)的星期,否則打印非法參數(shù) var week = 2; switch(week){ case 1: console.log("星期一"); //使用break可以來退出switch語句 break; case 2: console.log("星期二"); break; case 3: console.log("星期三"); break; default : console.log("非法數(shù)字"); break; }
三十二、條件分支語句練習(xí)(一)
對于成績大于60分的,輸出"合格"。低于60分的,輸出"不合格"
//方法一:
var socre = 59; switch(parseInt(socre/10)){ case 10: case 9: case 8: case 7: case 6: console.log("合格"); break; default: console.log("不合格"); break; }
//方法二:
var socre = 59; switch(true){ case score >= 60: console.log("合格"); break; default: console.log("不合格"); break; }
三十三、while循環(huán)
/* 向頁面中輸出連續(xù)的數(shù)字 */ // var n = 1; // document.write(n++ +"
"); //輸出1 /* 循環(huán)語句: 通過循環(huán)語句可以反復(fù)的執(zhí)行一段代碼多次 while循環(huán) -語法 while(條件表達(dá)式){ 語句... } -while語句在執(zhí)行時(shí), 先對條件表達(dá)式進(jìn)行求值判斷 如果值為true,則執(zhí)行循環(huán)體 循環(huán)體執(zhí)行完畢后,繼續(xù)對表達(dá)式進(jìn)行判斷 如果為true,則繼續(xù)執(zhí)行循環(huán)體,以此類推 如果值為flash,則終止循環(huán) do...while循環(huán) - 語法 do{ 語句... }while(條件表達(dá)式) - 執(zhí)行流程: do...while語句在執(zhí)行時(shí),會(huì)先執(zhí)行循環(huán)體 循環(huán)體執(zhí)行完畢以后,在對while后的條件表達(dá)式進(jìn)行判斷 如果結(jié)果為true,則繼續(xù)執(zhí)行循環(huán)體,執(zhí)行完畢繼續(xù)判斷以此類推 如果結(jié)果為false,則終止循環(huán) 實(shí)際上這倆個(gè)語句功能類似,不同的是while是先判斷后執(zhí)行 而do...while會(huì)先執(zhí)行后判斷 do...while可以保證循環(huán)體至少執(zhí)行一次 而while不能 */
// 方法一
//向這種將條件表達(dá)式寫死為true的循環(huán),叫做死循環(huán) //該循環(huán)不會(huì)停止,除非瀏覽器關(guān)閉,死循環(huán)在開發(fā)中慎用 //可以使用break,來終止循環(huán) var n = 1; while(true){ alert(n++); //判斷n是否是10 if(n == 10){ //退出循環(huán) break; } }
//方法二
//創(chuàng)建一個(gè)循環(huán),往往需要三個(gè)步驟 // 1.創(chuàng)建一個(gè)初始化的變量 var i = 0; //2.在循環(huán)中設(shè)置一個(gè)條件表達(dá)式 while(i < 10){ alert(i); //3.定義一個(gè)更新表達(dá)式,每次更新初始化變量 i++; }
//方法三
var i = 0; while(i < 10){ document.write(i++ +"
"); } // 輸出為換行的數(shù)字
//方法四
do{ socument.write(i++ +"
"); }while(i < 10);
三十四、while循環(huán)練習(xí)
/* 假如投資的幾年利率為5%,試求從1000塊增長到5000塊,需要花費(fèi)多少年 1000 1000*1.05 1050 1050*1.05 */ //定義一個(gè)變量,表示當(dāng)前的錢數(shù) (代碼解析) var money = 1000; //定義一個(gè)計(jì)數(shù)器 var count = 0; //定義一個(gè)while循環(huán)來計(jì)算每年的錢數(shù) while(money < 5000){ money *= 1.05; //使用count自增 count++; } console.log("一共需要"+count+"年"); // money *= 1.05 //money = money * 1.05 它倆一個(gè)意思 var money = 1000; var count = 0; while(money < 5000){ money *= 1.05; count++; } console.log("一共需要"+count+"年");
三十五、while練習(xí)(一) 使用if練習(xí)一
//將prompt放入到一個(gè)循環(huán)中
while(true){
//score就是小明的期末成績 var score = prompt("請輸入小明的期末成績(0-100):"); //判斷用戶輸入的值是否合法 if(score >= 0 && score <= 100){ //滿足該條件則證明用戶的輸入合法,退出循環(huán) break; } alert("請輸入有效的分?jǐn)?shù)");
}
//根據(jù)score的值來決定小明什么獎(jiǎng)勵(lì) if(score == 100){ alert("獎(jiǎng)勵(lì)一倆BMW"); } else if(score >= 80){ alert("獎(jiǎng)勵(lì)一臺(tái)iphone15s"); } else if(score >= 60){ alert("獎(jiǎng)勵(lì)一本參考書"); } else{ alert("什么獎(jiǎng)勵(lì)也沒有"); }
三十六、for循環(huán)
for語句,也是一個(gè)循環(huán)語句,也稱為for循環(huán)
在for循環(huán)中,為我們提供了專門的位置用來放三個(gè)表達(dá)式: 1.初始化表達(dá)式 2.條件表達(dá)式 3.更新表達(dá)式 for(初始化表達(dá)式;條件表達(dá)式;更新表達(dá)式){ 語句... } for循環(huán)的執(zhí)行流程: 1.執(zhí)行初始化表達(dá)式,初始化變量(初始化表達(dá)式只能則執(zhí)行一次) 2.執(zhí)行條件表達(dá)式,判斷是復(fù)執(zhí)行循環(huán) 3.如果為true,則執(zhí)行循環(huán) 如果為false,則終止循環(huán) 4.執(zhí)行更新表達(dá)式,更新表達(dá)式執(zhí)行完畢繼續(xù)重復(fù)執(zhí)行 //方法一: //創(chuàng)建一個(gè)執(zhí)行10次的while循環(huán) //初始化表達(dá)式 var i = 0; // while(i < 10){ //設(shè)置更新表達(dá)式 alert(i++); } //方法二: for(i = 0 ; i < 10 ; i++){ alert(i); } //方法三: /* for循環(huán)中的三個(gè)部分都可以省略,也可以寫在外部 如果在for循環(huán)中不寫任何表達(dá)式,只寫倆個(gè); 此時(shí)循環(huán)是一個(gè)死循環(huán)會(huì)一直執(zhí)行下去,慎用 */ var i = 0; for(;i<10;){ alert(i++); }
三十七、for循環(huán)練習(xí)(一)
打印1-100之間所有奇數(shù)之和
//創(chuàng)建一個(gè)變量,用來保存奇數(shù)之和
var sum = 0; for(var i = 1 ; i <= 100 ; i++){ //判斷i是否是奇數(shù) //不能被2整除的數(shù)就是奇數(shù)(==是偶數(shù) !=是奇數(shù)) if(i%2 != 0){ //如果i除以2有余數(shù)則證明i是奇數(shù) // console.log(i); sum = sum + i; } } //奇數(shù)總和2500 console.log("奇數(shù)之和:"+sum);
三十八、for循環(huán)練習(xí)(二)
打印1-100之間的所有7的倍數(shù)的個(gè)數(shù)及總和
//3.定義一個(gè)變量來保存組合 var sum = 0; //5.定義一個(gè)計(jì)數(shù)器,來記錄數(shù)量 var count = 0; for(var i = 1 ; i <= 100 ; i++){ // console.log(i); (1.先打印出1到100) //2.判斷i是否是7的倍數(shù)(輸出7的倍數(shù)) if(i%7 == 0){ // console.log(i); sum += i; //(4.求總和) count++; //(5.使計(jì)數(shù)器自增1) } } //輸出總和 console.log("總和為:"+sum); //合為735 //輸出總數(shù)量 console.log("總數(shù)量:"+count); //數(shù)量為14
三十九、for循環(huán)練習(xí)(三)
水仙花數(shù)
水仙花數(shù)是指一個(gè)3位數(shù),它的每個(gè)位上的數(shù)字的3 次冪之和等于它本身 (例如: 1^3 + 5^3 + 3^3 = 153),請打印所有的水仙花數(shù)
//先打印所有的三位數(shù)
for(var i = 100 ; i < 1000 ; i++){ //獲取i的百位 十位 個(gè)位的數(shù)字 //獲取百位數(shù) var bai = parseInt(i/100); //獲取十位上的數(shù)字 var shi = parseInt((i-bai*100)/10); //獲取個(gè)位上的數(shù)字 var ge = i % 10; //判斷i是否是水仙花數(shù) if(bai*bai*bai+shi*shi*shi+ge*ge*ge == i){ console.log(i); //輸出的結(jié)果為153 370 371 407 } }
四十、質(zhì)數(shù)練習(xí)
在頁面中接收一個(gè)用戶輸入的數(shù)字,并判斷該數(shù)是否是質(zhì)數(shù)
質(zhì)數(shù):只能被1和它自身整除的數(shù),1不是質(zhì)數(shù)也不是合數(shù),質(zhì)數(shù)必須是大于1的自然數(shù) var num = prompt("請輸入一個(gè)大于1的整數(shù)"); //判斷這個(gè)值是否合法 if(num <= 1){ alert("該數(shù)值不合法"); }else{ //創(chuàng)建一個(gè)變量來保存當(dāng)前的數(shù)的狀態(tài) //默認(rèn)當(dāng)前num是質(zhì)數(shù) var flag = true; //判斷num是否是質(zhì)數(shù) //獲取2-num之間的數(shù) for(var i=2;i四十一、嵌套的for循環(huán)
/* 通過程序,在頁面中輸出如下的圖形 1 ***** ***** ***** ***** ***** 2 * 1 <1 i=0 ** 2 <2 i=1 *** 3 <3 i=2 **** 4 <4 i=3 ***** 5 <5 i=4 3 ***** 1 j<5(5-0) i=0 **** 2 j<4(5-1) i=1 *** 3 j<3(5-2) i=2 ** 4 j<2(5-3) i=3 * 5 J<1(5-4) i=4 */ /* 1 ***** ***** ***** ***** ***** */ //向body中輸出一個(gè)內(nèi)容 //document.write("*****
"); (方法一) //document.write("*****
"); //document.write("*****
"); //通過一個(gè)for循環(huán)來輸出圖形 //這個(gè)for循環(huán)執(zhí)行幾次,圖形的高度就是多少 //它可以用來控制圖形的高度 for (var i=0;i<5;i++){ //高 // document.write("*****
"); //方法二 //在循環(huán)的內(nèi)部創(chuàng)建一個(gè)循環(huán),用來控制圖形的寬度 //目前我們的外部的for循環(huán)執(zhí)行1次,內(nèi)部的就會(huì)執(zhí)行5次 //內(nèi)層循環(huán)可以來決定圖形的寬度,執(zhí)行幾次圖從的寬度就是多少 for(var j=0;j<5;j++){ //寬 document.write("* "); // 空格 } //輸出一個(gè)換行 document.write("
"); //最終輸出一個(gè)5*5的*矩形 } /*2 * ** *** **** ***** */ for(var i=0;i<5;i++){ for(var j=0 ; j"); } //最終輸出一個(gè)梯形的* /* 3 ***** **** *** ** * */ for(var i=0 ; i<5 ; i++){ for(var j=0 ; j<5-i ; j++){ document.write("* "); } document.write("
"); }四十二、for循環(huán)練習(xí)(一)
1.打印99乘法表
//創(chuàng)建外層循環(huán),用來控制乘法表的高度 for(var i=1; i<=9 ; i++){ //創(chuàng)建一個(gè)內(nèi)層循環(huán)來控制圖形的寬度 for(var j=1 ; j<=i ; j++){ document.write(""+j+"*"+i+"="+i*j+""); } //輸出一個(gè)換行 document.write("
"); }