JavaScript初級教程(第四課)
更新時間:2007年04月05日 00:00:00 作者:
這是我定義的一個數(shù)組:
var monkeys = new Array("mattmarg","wendy","kristin","tim","aaron", "luke");
var kittyphile = new Array("wendy","ruby","roscoe","tim");
var discophile = new Array("mattmarg", "john travolta", "wendy");
var happy = new Array("tim", "wendy","stimpy", "aaron");
var cranky = new Array("ren", "mattmarg","luke");
隨著這些數(shù)組的定義,arrayIntersect函數(shù)給出,我們可輕而易舉的發(fā)現(xiàn)那些網(wǎng)猴酷愛迪斯科:愛跳舞的網(wǎng)猴
注意到盡管John Travolta喜愛迪斯科,但他不在monkeys請單中,則他就不是只愛跳舞的網(wǎng)猴為調(diào)用該函數(shù)值,可這么來:
<a href="#" onClick="arrayIntersect('dancing monkeys',monkeys,discophile);">dancing monkeys</a>
這是個具有3個參數(shù)的函數(shù):一個代表交叉的姓名,第一個數(shù)組,及第二個數(shù)組。這也很容易發(fā)現(xiàn)愛貓的網(wǎng)猴名愛貓的網(wǎng)猴。
看一下源碼:
<a href="#" onClick="arrayIntersect('monkeys who love cats',monkeys,kittyphile);">cat-loving monkeys</a>
讓我們看看arrayIntersect函數(shù)本身:
function arrayIntersect(intersect_name, array_1, array_2)
{
var the_list = "";
for (loop_1=0; loop_1<array_1.length; loop_1++)
{
for (loop_2=0; loop_2<array_2.length; loop_2++)
{
if (array_1[loop_1] == array_2[loop_2])
{
the_list = the_list + array_1[loop_1] + " ";
}
}
}
alert("the " + intersect_name + " are: "+ the_list);
}
看看你是否已經(jīng)弄懂本例中的循環(huán)。關(guān)鍵是函數(shù)第一行:
function arrayIntersect(intersect_name, array_1, array_2)
這里定義了一個叫arrayIntersect的函數(shù),它有3個參數(shù)。就象上例,每個參數(shù)就象一個變量,當(dāng)函數(shù)調(diào)用時賦值。因此,當(dāng)函數(shù)被調(diào)用時:
arrayIntersect('dancing monkeys',monkeys,discophile);
下列分配:
intersect_name = 'dancing monkeys'
array_1 = monkeys
array_2 = discophile
唯一需注意的是,你必須以正確的參數(shù)數(shù)目來調(diào)用函數(shù)。如果你一旦象這樣調(diào)用arrayIntersect:
arrayIntersect(monkeys,discophile);
將會出錯。試一下看會發(fā)生什么錯誤。
在任一標(biāo)準(zhǔn)的Javascript程序中,函數(shù)都是基本的部件。因此理解其工作原理極其重要。第四課就到此結(jié)束了。
對于JavaScript來說有兩個主要部分:該語言本身及其對象。在第2課介紹的語法中,我們已經(jīng)研究了變量,語句和if
語句,這些是所有程序設(shè)計語言的組成部分?,F(xiàn)在來學(xué)習(xí)Java script語法的其余部分。
對于JavaScript語法來說,我們僅剩下三個問題需要學(xué)習(xí):循環(huán)、數(shù)組和函數(shù)。
讓我們從循環(huán)開始。
有時你想反復(fù)做同一件事。你想向某些人詢問一個口令,你不斷地問,直到得到正確的口令。如果你只想給他們兩次嘗
試的機會,你可以這么做:
var the_password = "pass the wrench";
var answer = prompt("What's the woyd?","");
if (answer != the_password) {
answer = prompt("What's the woyd?","");
if (password != the_password) {
document.write("You lose!<p>");
} else {
document.write("That's right!<p>");
}
} else {
document.write("That's right!<p>");
}
不幸的是如果你想不住地問直到得到正確答案,上述做法是不起作用的。假使你是想詢問四次而不是兩次,那這已經(jīng)是
很討厭的事了。你將使用四個層次的if語句,這決不是件好事。
反復(fù)做相似的事情的最好方法是使用一個循環(huán)(loop)。在這種情況下,你可以用一個循環(huán)來不斷的要求口令直到這個人
說出為止。這里有一個while循環(huán)工作的例子,口令是:pass the wrench。
var password="pass the wrench";
var answer;
while (answer != password)
{
answer = prompt("What's the woyd?","");
}
在這個典型的Javascript中,我們從雙變量聲明開始:
var password="pass the wrench";
var answer;
這里我們定義該密碼作為一個字符串,我們聲明一個稱為answer的變量。你將理解為什么我們不得不立即聲明一個answer。下面幾行是非常重要的:
while (answer != password)
{
answer = prompt("What's the woyd?","");
}
這是一個while循環(huán)。while 循環(huán)的一般格式為:
while (some test is true)
{
do the stuff inside the curly braces
}
上述幾行表明:“當(dāng)answer不等于Password時,執(zhí)行提示命令。”這一循環(huán)將持續(xù)地執(zhí)行大括號內(nèi)的語句直至條件不成立。在使用者輸入的單詞與密碼一致(即Pass the wrench)的情況下,條件不成立。
由于在對一個未聲明的變量執(zhí)行一個如(answer!=password)的測試時,在某些瀏覽器上會產(chǎn)生錯誤,所以我們必須聲明answer。由于在while循環(huán)中將通過提示方案對answer賦值,在我們第一次進(jìn)行循環(huán)中,answer將沒有數(shù)值。提前定義它并設(shè)定其處始值為“”。
由于不定義循環(huán)經(jīng)常地使用,循環(huán)經(jīng)常用來執(zhí)行一組語句某一特定的次數(shù)。在接下來的教程中用另一個循環(huán)來演示如何作這項工作。
我們已見到了很多所請求的X`S(X`S是什么?說不清,原文如此--jsfan注),現(xiàn)在復(fù)習(xí)一下:
第一步:請求X`S的數(shù)目
var width = prompt("How many x's would you like? (1-10 is good)","5");
下一步,聲明一些變量:
var a_line="";
var loop = 0;
現(xiàn)在,關(guān)鍵之處:
while (loop < width)
{
a_line = a_line + "x";
loop=loop+1;
}
即說:“當(dāng)變量循環(huán)小于所請求的X`S行寬時,在該行加入另一X然后在循環(huán)值上加1?!痹撗h(huán)將繼續(xù)加一X到該行并在循環(huán)值
上加1直到循環(huán)不在小于請求的行寬。請看下列源碼分析:
第一次
a_line = "" (因為初始值為"")
loop=0 (因為初始值為0)
width=2 (用戶賦的值)
0 比2小,所以
a_line = a_line + "x", 所以 a_line = "x"
loop=loop+1, 所以 loop = 1
返回循環(huán):
第二次
loop=1
width=2
a_line = "x"
1比2小,所以
a_line = a_line + "x", so now a_line = "xx"
loop=loop+1, so now loop = 2
返回循環(huán):
第三次
loop=2
width=2
a_line = "xx"
2不小于2,所以退出循環(huán),繼續(xù)向下執(zhí)行:
隨后是:
alert(a_line);
啟動一個警告對話框。
這種循環(huán)運用的如此普遍以至于程序員們開發(fā)了一些簡便方式,條件循環(huán)可寫成這樣:
while (loop < width)
{
a_line += "x"; //相當(dāng)于 a_line = a_line + "x";
loop++; //相當(dāng)于 loop=loop+1;
}
首行,“x”,表示“本身加x”。若已有a_number=5,那么可寫成,a_number+=3,即是說:a_number=a_number+3。程序員就是這么偷懶的。
下行,loop++,意味著“自身加1”。于是loop++即為:loop=loop=1。它也可寫成loop+=1。這樣偷懶行為非常有效。
就象不止一種方式在一個數(shù)上加1一樣,也有不止一種方法來寫一個循環(huán)。While循環(huán)不是唯一的循環(huán)模式,另一流行的循環(huán)是for循環(huán)。
上例中while循環(huán)可以寫成如下形式:
var a_line="";
var loop = 0;
while (loop < width)
{
a_line += "x";
loop++;
}
也可用For循環(huán)寫成:
var a_line="";
for (loop=0; loop < width; loop++)
{
a_line += "x";
}
for循環(huán)的格式為:
for (initial value; test; increment)
{
do this stuff;
}
這樣,上述for loop設(shè)置loop=0并持續(xù)加1直到loop<width,這和上例中while loop相同,僅是少了數(shù)行而已。都表示“在a_line上加width次x”。
在我們使用循環(huán)之前應(yīng)明白一件事:循環(huán)可以嵌套。這里有一個關(guān)于嵌套循環(huán)的例子。
這是程序:
var height = prompt("How high do you want the grid? (1-10 is good)","10");
var width= prompt("How wide do you want the grid? (1-10 is good)","10");
var a_line;
var new_window = window.open("/webmonkey/98/04/files1a/grid.html","looper","width=400,height=400");
new_window.document.writeln("<h1>A Grid</h1>");
for (height_loop=0; height_loop< height; height_loop++)
{
a_line = "";
for(height_loop=0; height_loop<height; height_loop++)
{
a_line+="x";
}
new_window.document.writeln(a_line + "<br>");
}
在請求高及寬后,打開一新窗口,并為它寫一個頭,進(jìn)入for循環(huán)。第一個for循環(huán)設(shè)a_line=“”。試一下不用該行做一下本例,看看會發(fā)生什么。在初始化a_line后,程序進(jìn)入下一個for循環(huán),當(dāng)寬達(dá)到所需值后,建立X`S行并將它顯現(xiàn)在新窗口中。這些將發(fā)生height次。
相關(guān)文章
javascript創(chuàng)建和存儲cookie示例
javascript創(chuàng)建和存儲cookie,cookie是存儲于訪問者的計算機中的變量,下面看一下使用示例吧2014-01-01Javascript學(xué)習(xí)筆記之 對象篇(三) : hasOwnProperty
判斷一個屬性是定義在對象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來的 hasOwnProperty 方法。 hasOwnProperty 方法是 Javascript 中唯一一個處理對象屬性而不會往上遍歷原型鏈的。2014-06-06JavaScript中Array 對象相關(guān)的幾個方法
JavaScript中Array 對象相關(guān)的幾個方法...2006-12-12實例:用 JavaScript 來操作字符串(一些字符串函數(shù))
實例:用 JavaScript 來操作字符串(一些字符串函數(shù))...2007-02-02JavaScript的strict模式與with關(guān)鍵字介紹
這篇文章主要介紹了JavaScript的strict模式與with關(guān)鍵字,需要的朋友可以參考下2014-02-02