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