HTML-JS 循环 函数 递归
【循環(huán)結(jié)構(gòu)的執(zhí)行步驟】
1、聲明循環(huán)變量
2、判斷循環(huán)條件
3、執(zhí)行循環(huán)體操作
4、更新循環(huán)變量
然后,循環(huán)執(zhí)行2-4,直到條件不成立時(shí),跳出循環(huán)。
while循環(huán)()中的表達(dá)式,運(yùn)算結(jié)果可以是各種類型,但是最終都會(huì)轉(zhuǎn)化為真假
轉(zhuǎn)化規(guī)則同if結(jié)構(gòu)。
while循環(huán)特點(diǎn):先判斷,再執(zhí)行。
do-while循環(huán)特點(diǎn):先執(zhí)行,再判斷;即使初始條件不成立,do-while循環(huán)也至少執(zhí)行一次。
// var num=1;//1、聲明循環(huán)變量
// while (num<=10){//2、判斷循環(huán)條件
// document.write(num+"<br />");//3、執(zhí)行循環(huán)體操作
// num++;//4、更新循環(huán)變量
// }
【for循環(huán)】
1、for循環(huán)有三個(gè)表達(dá)式:①聲明循環(huán)變量;②判斷循環(huán)條件;③ 更新循環(huán)變量。
三個(gè)表達(dá)式之間用;分隔;
for循環(huán)三個(gè)表達(dá)式都可以省略,但是兩個(gè);缺一不可。
2、for循環(huán)的執(zhí)行特點(diǎn):先判斷,再執(zhí)行。與while相同。
3、for循環(huán)三個(gè)表達(dá)式,都可以有多部分組成。第二部分多個(gè)判斷條件用&& || 連接,
第一三部分,用,分隔。
[循環(huán)控制語(yǔ)句]
?1、break:跳出本層循環(huán),繼續(xù)執(zhí)行循環(huán)后面的語(yǔ)句。
?如果循環(huán)有多層嵌套,則break只能跳出一層。
?2、continue:跳過(guò)本次循環(huán)剩余的代碼,繼續(xù)執(zhí)行下一次循環(huán)。
?① 對(duì)于for循環(huán),continue之后執(zhí)行的語(yǔ)句,是循環(huán)變量更新語(yǔ)句i++
?② 對(duì)于while do-while循環(huán),continue之后執(zhí)行的語(yǔ)句,是循環(huán)條件判斷。
?因此,使用這兩個(gè)循環(huán)時(shí),必須將continue放到i++之后使用。否則,continue將* 跳過(guò)i++導(dǎo)致死循環(huán)。
例題:
輸入N個(gè)數(shù),實(shí)現(xiàn)從1加到N
var count = prompt("請(qǐng)輸入整數(shù)個(gè)數(shù):");var i = 0;var sum = 0;while (i<count){var num = parseInt(prompt("請(qǐng)輸入第"+(i+1)+"整數(shù):"));if(i==count-1) document.write(num+"=");else document.write(num+"+");sum += num;i++;}document.write(sum);
求斐波那契數(shù)列
var a=1;var b=1;var c=a+b;document.write("1 "+1+" ");for (var i=1;i<18;i++) {a=b;b=c;c=a+b;if ((i+2)%5==0&&(i+2)!=0) {document.write(c+"<br />");}else{document.write(c+" ");}}【函數(shù)的聲明及調(diào)用】
1、函數(shù)的聲明格式:
function 函數(shù)名(參數(shù)1,參數(shù)2,...){
//函數(shù)體代碼
return 返回值;
}
函數(shù)的調(diào)用
① 直接調(diào)用:函數(shù)名(參數(shù)1的值,參數(shù)2的值,....);
② 事件調(diào)用方式:直接在HTML標(biāo)簽中,使用事件名="函數(shù)()"
<button οnmοuseοut="SaySth('你好啊','red')">點(diǎn)擊按鈕,打印內(nèi)容</button>
2、函數(shù)的注意事項(xiàng)
① 函數(shù)名必須要符合小駝峰法則,首字母小寫之后每個(gè)單詞首字母大寫 ;
② 函數(shù)名后面的括號(hào)中可以有參數(shù),也可以沒(méi)有參數(shù),分別稱為有參函數(shù)和無(wú)參函數(shù);
③ 聲明函數(shù)時(shí)的參數(shù)列表稱為形參列表,形式參數(shù)。(變量的名字);
function saySth(str,color){}
調(diào)用函數(shù)時(shí)的參數(shù)列表,稱為實(shí)參列表,實(shí)際參數(shù)。(變量的賦值);
saySth("你好","red");
④ 函數(shù)的形參列表個(gè)數(shù)與實(shí)參列表個(gè)數(shù)沒(méi)有實(shí)際關(guān)聯(lián)關(guān)系。
函數(shù)參數(shù)的個(gè)數(shù),取決于實(shí)參列表
如果實(shí)參列表的個(gè)數(shù)<形參列表,則未賦值的形參,將為Undefind。
⑤ 函數(shù)可以有返回值,使用return返回結(jié)果,調(diào)用函數(shù)時(shí),可以使用一個(gè)變量接收函數(shù)的返回結(jié)果。
如果函數(shù)沒(méi)有返回值,則接收的結(jié)果為Undefined;
function func(){
return="haha";
}
var num=func();//num="haha";
⑥ 函數(shù)中變量的作用域
在函數(shù)中,使用var 聲明的變量,為局部變量。只能在函數(shù)內(nèi)部訪問(wèn);
不用var聲明的變量,為全局變量,在函數(shù)外部也能訪問(wèn);
函數(shù)的形參列表,默認(rèn)為函數(shù)的局部變量,只能在函數(shù)內(nèi)部使用。
⑦ 函數(shù)的聲明與函數(shù)的調(diào)用沒(méi)有先后之分,即可以在聲明函數(shù)前調(diào)用函數(shù)
func();//聲明func之前調(diào)用也是可以的
function func(){}
?[匿名函數(shù)的使用]
?1、聲明一個(gè)匿名函數(shù),直接賦值給某一個(gè)事件。
?window.οnlοad=function(){} 文檔就緒函數(shù)
?2、匿名函數(shù)表達(dá)式。將匿名函數(shù),賦值給一個(gè)變量。
?聲明:var func=function(){}
?調(diào)用:func();
?注意:使用匿名函數(shù)表達(dá)式時(shí),函數(shù)的調(diào)用語(yǔ)句,必須放在函數(shù)聲明語(yǔ)句之后(與普通函數(shù)的區(qū)別)。
?3、自執(zhí)行函數(shù):
?① !function(){}();//可以使用多種運(yùn)算符開頭但一般用感嘆號(hào)。
?!function(形參列表){}(實(shí)參列表);
?② (function(){}());//使用()將函數(shù)及函數(shù)后的括號(hào)包裹
?③ (function(){})();使用()只包裹函數(shù)部分;
?三種寫法的特點(diǎn):
?① 使用!開頭,結(jié)構(gòu)清晰,不容易混亂,推薦使用。
?② 能夠表明匿名函數(shù)與調(diào)用的()為一個(gè)整體,官方推薦使用。
?③ 無(wú)法表明括號(hào)與之后的()的整體性,不推薦使用;
?
?
//單行注釋
/*多行注釋,開頭一個(gè)* */
/**
[JS代碼的執(zhí)行順序問(wèn)題]
JS代碼在運(yùn)行時(shí),會(huì)分為兩大部分。檢查裝載和執(zhí)行階段
檢查裝載階段:會(huì)先檢測(cè)代碼的語(yǔ)法錯(cuò)誤,進(jìn)行變量、函數(shù)的聲明
執(zhí)行階段:變量的賦值、函數(shù)的調(diào)用等,都屬于執(zhí)行階段
以下面代碼為例:
console.log(num);//undefined
var num=10;
func1();//函數(shù)可以正常執(zhí)行
function func1(){}
func2();//函數(shù)不能執(zhí)行,打印func2時(shí),顯示undefined
var func2=function(){}
上述代碼的執(zhí)行順序?yàn)?/span>
------檢查裝載階段-------
var num;
function func1(){}
var func2;
------代碼執(zhí)行階段-------
console.log(num); num=10;
func1();
func2(); func2=function(){}
[函數(shù)的內(nèi)部屬性]
1、arguments對(duì)象
① 作用:用于儲(chǔ)存調(diào)用函數(shù)時(shí)的所有實(shí)參。當(dāng)我們調(diào)用函數(shù),并用實(shí)參賦值時(shí),實(shí)際上參數(shù)列表已經(jīng)
保存到arguments數(shù)組中,可以在函數(shù)中,使用arguments[n]的形式調(diào)用。n從0開始。
② arguments數(shù)組的個(gè)數(shù),取決于實(shí)參列表,與形參無(wú)關(guān)。
但是,一旦第N個(gè)位置的形參、實(shí)參、arguments都存在時(shí),形參將與arguments綁定,同步變化。(即在
函數(shù)中修改形參的值,arguments也會(huì)改變,反之,亦成立)
③ arguments.callee 是arguents的重要屬性,表示arguments所在函數(shù)的引用地址,在函數(shù)里面可以
使用arguments.callee調(diào)用函數(shù)本身
在函數(shù)內(nèi)部,調(diào)用函數(shù)自身的寫法,叫做遞歸。
遞歸分為兩部分:遞和歸。以遞歸調(diào)用語(yǔ)句為界限,可以將函數(shù)分為上下兩部分。
遞:是當(dāng)函數(shù)執(zhí)行上半部分,遇到自身的調(diào)用語(yǔ)句時(shí),繼續(xù)進(jìn)入內(nèi)層函數(shù),再執(zhí)行上半部分。
直到執(zhí)行完最內(nèi)層函數(shù)。
歸:當(dāng)最內(nèi)層函數(shù)執(zhí)行完以后,再?gòu)淖顑?nèi)層函數(shù)開始,逐漸執(zhí)行函數(shù)的下半部分。
當(dāng)最外層函數(shù)執(zhí)行時(shí),遇到自身的調(diào)用語(yǔ)句,會(huì)進(jìn)入內(nèi)層函數(shù)執(zhí)行,而外層函數(shù)的后半部分暫不執(zhí)行。直到
最內(nèi)層函數(shù)執(zhí)行完以后,再逐步向外執(zhí)行。
使用遞歸計(jì)算1-10的和
?
?
var sum=0;var i=1;function sum1() {sum += i;i++;if (i<=10) {sum1();} return sum;}sum1();alert(sum);?
轉(zhuǎn)載于:https://www.cnblogs.com/zzzzyy/p/7435946.html
總結(jié)
以上是生活随笔為你收集整理的HTML-JS 循环 函数 递归的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#异步编程のParallel(并行)
- 下一篇: 数论-朴素卢卡斯(Lucas)模板