韓順平十天javascript全套筆記_第1頁
韓順平十天javascript全套筆記_第2頁
韓順平十天javascript全套筆記_第3頁
韓順平十天javascript全套筆記_第4頁
韓順平十天javascript全套筆記_第5頁
已閱讀5頁,還剩223頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、js的講解u js 技術(shù)用在什么地方?1. 地圖搜索2. 網(wǎng)頁游戲3. 對用戶輸入校驗(yàn)(email ,數(shù)字,身份證,ip.)4. 股市網(wǎng)站.核心一句話;js可以對網(wǎng)頁的元素進(jìn)行編程控制 . button input , image .,實(shí)現(xiàn)動態(tài)效果.舉例說明:<html><meta http-equiv="content-type" content="text/html;charset=utf-8"/><head><script language="javascript" type="

2、;text/javascript">function test()window.alert("你點(diǎn)擊button");</script></head><body><input type="button" onclick="test()"/></body></html>u js的基本介紹 js是一種腳本語句,不能獨(dú)立運(yùn)行,它往往和配合別的語言使用, 比如(html/php/jsp/asp/). js 有自己的函數(shù)(系統(tǒng)函數(shù),自定義函數(shù)), 變量, 有

3、編程的控制語句(順序,分支,循環(huán)), 但是相對說, 它的語法規(guī)范不是特別嚴(yán)格. js是解釋執(zhí)行語言js源碼 ->直接被執(zhí)行(js引擎內(nèi)嵌到瀏覽器)編譯語句java->.class->執(zhí)行.classc->目標(biāo)文件->執(zhí)行 js可以對網(wǎng)頁元素編程,可以改變網(wǎng)頁某個元素的外觀 js是用于bs開發(fā). js是客戶端技術(shù),它運(yùn)行在客戶端的瀏覽器示意圖:!這個很重要!小插曲livescript -> (netscape和sun 合作)->javascript java 和 javascript 沒有任何關(guān)系jscript 是微軟的產(chǎn)品,但是它和 javascrip

4、t 語法規(guī)范一致.請注意: 因?yàn)闉g覽器的差異,可能有這樣問題,在ie中運(yùn)行正常的js腳本,在ff中運(yùn)行不正常.應(yīng)當(dāng)在不同的瀏覽器中去測試是否ok 瀏覽器兼容. 解決這個問題的簡單方法是: 盡量使用js通用的函數(shù).u 瀏覽器歷史 如何去自己查詢js的手冊w3schooljscriptu 如何理解js是事件驅(qū)動的腳本語言事件發(fā)生(用戶做某個操作)-驅(qū)動->函數(shù)的調(diào)用u 我們的js程序hello,world<html><head><meta http-equiv="content-type" content="text/html;ch

5、arset=utf-8"/><script language="javascript">/跳出對話框 php 調(diào)用某個方法是 對象名->方法/js 中 對象名.方法/window是js語句的dom對象,無需創(chuàng)建,可以直接使用 window.alert("hellow,wrold1");</script></head><body><script language="javascript">/跳出對話框 php 調(diào)用某個方法是 對象名->方法/js 中

6、 對象名.方法/window是js語句的dom對象,無需創(chuàng)建,可以直接使用 window.alert("hellow,wrold2");</script></body>總結(jié): 1. js碼可以放在 html/php 頁面的任何地方,js碼是從上到下依次執(zhí)行.嵌入一段 js碼是<script language=”javascipt” type=”text/javascript”>/js碼</script>對hello,world 程序改進(jìn),改為一個簡單加法運(yùn)算:<html><head><meta h

7、ttp-equiv="content-type" content="text/html;charset=utf-8"/><script language="javascript">/跳出對話框 php 調(diào)用某個方法是 對象名->方法/js 中 對象名.方法/window是js語句的dom對象,無需創(chuàng)建,可以直接使用 /如何在js中定義變量.var num1=4; /我定義了一個變量 名字叫 num1,同時賦值 4var num2=78; /我定義了一個變量 名字叫 num1,同時賦值 78var res=num

8、1+num2;window.alert("hellow,wrold1 res="+res);</script></head><body></body>u js的變量類型是由js引擎決定,如果要查看某個變量的類型,則可以使用typeof運(yùn)算符/js變量的類型是由js引擎來決定的.var name="shunping"/可以通過 typeof 來查看window.alert("name的類型是"+ typeof name);name=123;/可以通過 typeof 來查看window.al

9、ert("name的類型是"+ typeof name);u js的標(biāo)識符的規(guī)范 變量/函數(shù) 取名不要使用 js的保留關(guān)鍵字 同時變量名不要用數(shù)字開頭. js的變量是區(qū)分大小寫的var a=90;var A=89;/如果一個方法是屬于window 對象,則可以不帶window.而直接使用alert(a);alert(A);如果你不小心,定義了兩個同名的變量,則后面的覆蓋的前面的變量. js的注釋單行用 /多行用 /* */u js的基本數(shù)據(jù)類型js 的數(shù)據(jù)類型有 基本數(shù)據(jù)類型1. 整數(shù) 2. 實(shí)數(shù) 3. bool 4. 字串復(fù)合數(shù)據(jù)類型1. 數(shù)組 2.對象特殊數(shù)據(jù)類型1.

10、null 2. undefined 整數(shù)<script type="text/javascript">var n1=0x8a; var n2=0010123;var n3=1234;alert(n2);</script> 實(shí)數(shù)實(shí)數(shù)就是小數(shù),這個就不舉例說明特殊的數(shù)值NaN = not a number 如果提示錯誤說明,你的js代碼中把一個變量錯誤的當(dāng)做一個數(shù)值來使用.Infinity = 無窮大 var s="abc"/parseInt() 函數(shù)是js的全局函數(shù),可以直接使用/在哪里查詢alert(parseInt(s);var

11、 r=7/0;alert(r);在js中提供了兩個函數(shù)來判斷是不是一個NaN 和 intinityisNaN(判斷是不是一個數(shù)) isIninity/正則表達(dá)式var s="000.000123"if(isNaN(s)alert("不是數(shù)");elsealert("是數(shù)"); 布爾類型布爾類型表示真和假在js中 表示 假有如下:l false, 0, “”, null , undefined、NaN其它的表示真代碼:var a=100;if(a)alert("真");elsealert("假")

12、;ajaxvar obj1=獲取對象;if(!obj1)alert(“對象創(chuàng)建失敗”); 字符型字符串的基本用法:var str=”aaaaaaa”;var str2=aakflaskf;lsakf;lsa;如果我們希望在字符串中有包含特殊字符,比如 ” 換行。考慮使用轉(zhuǎn)義符, 用于轉(zhuǎn)義的還有:字符串中的特殊字符,需要以反斜杠()后跟一個普通字符來表示,例如:r、n、t、b、'、 " 、xxxu js的復(fù)合數(shù)據(jù)類型 數(shù)組 對象u js的特殊數(shù)據(jù)類型 null 空 undefined 未定義u 數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換js中提供了兩個函數(shù)可以把字符串強(qiáng)制轉(zhuǎn)成數(shù) parseInt pa

13、rseFloat? 如果我把 123 當(dāng)做字符串.案例如下: 讓用戶輸入兩個數(shù),并計(jì)算和.var num1=mpt("請輸入一個數(shù)");var num2=mpt("請輸?shù)诙€數(shù)");var res=parseFloat(num1)+parseFloat(num2);/php . 字符串拼接 + 表示運(yùn)算alert("結(jié)果是="+res);var num3=123;var str="hello"+num3;alert(str);u js的運(yùn)算符+ 、-、* 、 / 、%除法注意

14、我們的js對除不盡的數(shù),保留精度是17.可以自己想辦法保留小數(shù)位數(shù)1. 自己寫函數(shù)var num1=7;var num2=3;var res=num1/num2;res=res+""/window.alert(typeof res);/alert(res);/看出 小數(shù)保留精度是17位.如果你要到第二位. 用substring方法。采用字符串截?cái)唷?把res當(dāng)做一個字符串,看找到小數(shù)點(diǎn)在第幾位.var index=res.indexOf(".");window.alert("保留小數(shù)兩位是"+res.substring(0,index

15、+3);2. 使用Number對象的方法toFixed();alert(res.toFixed(6);3. 我們?yōu)榱烁玫墓芾韏s文件,可以把js文件 寫在一個獨(dú)立的文件中,然后再需要的使用引入即可<script src=”js文件路徑”></script>4. + 和 運(yùn)算var a=56;var b=a+;/ b=a; a=a+1;window.alert(b);window.alert(a);如果是 var b=+a; = a=a+1; var b=a;var b=a+; <=> var b=a; a=a+1;5. 關(guān)系運(yùn)算符>= <= &

16、gt; < != = = = != =6. 邏輯運(yùn)算符&& 與| 或! 非var val=表達(dá)式1 && 表達(dá)式2;說明只要 表達(dá)式1為真 并且 表達(dá)式2為真,結(jié)果為真.說明: 如果第一個表達(dá)式為假,第二個表達(dá)式就不執(zhí)行.考點(diǎn)var num1=6;var num2=5;if(num1>num2&& (+num2)window.alert(num2);var res=表達(dá)式1 | 表達(dá)式2說明 表達(dá)式1為真,或者 表達(dá)式2為真,結(jié)果為真.l 如果表達(dá)式1為真,第二個表達(dá)式就不執(zhí)行. ! 非var res=!表達(dá)式;如果表達(dá)式為真,結(jié)果為

17、假,如果表達(dá)式為假,結(jié)果為真.關(guān)于 | 的特殊說明var a=0|0|"a"|0; window.alert(a);說: 如果 | 有為真的值,就會返回第一個為真的值, 如果都為假,就返回最后的值.u js的位運(yùn)算和移位運(yùn)算->面試題& 按位與 (兩位都是1,結(jié)果1)| 按位或 (只要有一個為1,結(jié)果1) 按位異或 (一個為1,一個為0,結(jié)果1)var res=4&5; =>4 補(bǔ)碼 : 00000000 0000010000000000 0000010100000000 00000100>> 右移運(yùn)算 << 左移運(yùn)算&g

18、t;>> 無符號右移運(yùn)算.5>>200000000 0000010100000000 00000001window.alert(-5>>>2);5的補(bǔ)碼00000000 00000101-5的補(bǔ)碼5原碼->5的反碼->5的補(bǔ)碼原碼 10000000 00000000 00000000 00000101 反碼 11111111 11111111 11111111 11111010補(bǔ)碼 11111111 11111111 11111111 11111011 1001111111 11111111 11111111 111110 ->補(bǔ)碼-

19、>原碼u js的流程控制 順序控制 分支控制單分支( if)雙分支( if . else.)多分支( if()else if()else if()elseswitch()case 常量/變量:語句;break;.defulat:語句;2.1 單分支基本用法if(條件表達(dá)式)/為真,進(jìn)入var age=34;if(age>18)/提示,在頁面上輸出一句話document.write("age>18");2.2雙分支基本用法if(條件表達(dá)式.)/如果真.else /如果假.var age=34;if(age>18)document.write("

20、;對自己行為負(fù)責(zé)");elsedocument.write("放過你");2.3 多分支if(條件表達(dá)式)else if(條件表達(dá)式2)else if(條件表達(dá)式)else說明: 1. else if 可以有多個.2. else 語句可有可無.3. 多分支語句只能有一個入口。代碼:var age=12;if(age>18)document.write(">18");else if(age>10 && age<=18)document.write("送入少管所");else d

21、ocument.write("下次注意");u 多分支的switch基本用法是switch(表達(dá)式)case 常量/變量 : /語句break;case 常量/變量 : /語句 break;defulat :/語句注意swtich相當(dāng)靈活.1. 表達(dá)式的結(jié)果 類型可以是 string , number, boolane ,對象. array.2. case 后面可以是常量,可以是變量.3. 如果case后沒有break,那么當(dāng)程序執(zhí)行某個case塊,時,就會一直執(zhí)行,直到碰到一個break語句,才會跳出switch4. defual語句可以放在swith任何位置,當(dāng)一個條件

22、都匹配不到,就會執(zhí)行default,直到碰到一個break語句,或者switch執(zhí)行完畢.5. switch 和 if else if 的區(qū)別. 如果是針對幾個固定條件的判斷,則使用switch ,如果范圍的判斷,我們使用 if .else if./*請編寫一個程序,可以接收一個字符串,比如: a,b,c,d,e,f,g a表示星期一,b表示星期二 根據(jù)用戶的輸入顯示相依的信息.要求使用 switch 語句完成*/string,number,boolean, 對象,array/var str=1; /true->1 2 (1,2->true)/var obj=new Object(

23、);/var obj2=obj;var arr1=new Array("1","2");var arr2=arr1;switch(arr1)case arr2:document.write("星期一,猴子穿新衣"); break;case false:document.write("星期二,猴子當(dāng)小二"); break;default:document.write("猴子休息.");break;u js的循環(huán)控制語句forfor(初始化變量;循環(huán)條件的判斷;步長的變化)/語句whilewhile

24、(循環(huán)條件)/語句/步長的變化do.whiledo/語句/步長while(循環(huán)條件)需求:(為什么需要循環(huán)語句)->使用循環(huán)控制的語句來處理循環(huán)的需求 for 的基本用法for(初始化; 條件判斷; 控制變量變化)/for循環(huán)語句; 1. 初始化條件可以放在for 代碼前. 2. 條件判斷 可以是組合的 (i>10 && i<50 .)3. 控制變量變化 的部分可以放在 for循環(huán)體.快速入門: 編寫一個程序, 可以打印9000000句 “你好,我是劉德華同志!”。請大家想想怎么做?代碼 :for(var i=0;i<10;i+)document.wri

25、te("hello,wrold!"+i+"<br/>"); while循環(huán)控制基本用法:while(循環(huán)條件)/循環(huán)的代碼快速入門案例:我們用 while來實(shí)現(xiàn) 輸出10句 hello,worldvar i=0;while(i<10)document.write("hello,world"+i);i+;流程圖 : do.while循環(huán)控制基本用法:do/語句. /.while(循環(huán)條件);說明: 1. 語句部分可以是多條.2. 循環(huán)條件可以是一個組合條件 比如: i>10 && i<30快

26、速入門:把上面的要求用do.while循環(huán)一把.u 我們現(xiàn)在實(shí)際運(yùn)用一下for來輸出一個金字塔提示: 如果將來難題? 思路簡化:輸出一半的金字塔<html><head><meta http-equiv="content-type" content="text/html;charset=gb2312"/><script type="text/javascript">/輸出一半金字塔/* 1->一個* 2->2個* * 1->1* (1-1)*2+1=1 空格 2 總層數(shù)-

27、當(dāng)前層數(shù)=3-1=2 * 2->3* (2-1)*2+1=3 空格 1 總層數(shù)-當(dāng)前層數(shù)=3-2=1 * 3->5* (3-1)*2+1=5 空格 0 總層數(shù)-當(dāng)前層數(shù)=3-3=0 空心 分析 * 第一層 輸出* * * 中間層: 只輸出兩邊的*,空間輸出空格 思路->代碼* 最后一層 輸出輸出* 菱形 * * * * * */n變量表示層數(shù)var n=10;for(var i=1;i<=n;i+)/輸出空格for(var k=1;k<=n-i;k+)document.write("&nbsp;");for(var j=1;j<=

28、(i-1)*2+1;j+) /這里需要思考,什么時候輸出*,什么時候輸出空格if(i=1 | i=n)document.write("*");else/中間層.if(j=1 | j=(i-1)*2+1)document.write("*");elsedocument.write("&nbsp;")document.write("<br/>");</script></head><html>上課課堂練習(xí):1.請使用 while do.while 來改寫輸出金字塔的

29、案例:2.接收一個整數(shù),可以輸出對應(yīng)的菱形. , 再看看能不能輸出空心菱形u 如何調(diào)試 js代碼ie中如何調(diào)試js, ie 8 中自帶調(diào)試工具調(diào)式步驟: 先打開開發(fā)人員工具->腳本 下斷點(diǎn) 點(diǎn)擊啟動調(diào)試 刷新頁面,進(jìn)入調(diào)試狀態(tài)f11->一行一行執(zhí)行f10-> 跳過一個函數(shù)繼續(xù)執(zhí)行(相當(dāng)于把一個函數(shù)當(dāng)做一個語句執(zhí)行)shift+f11->跳出函數(shù)通過逐行調(diào)試,我們可以看到局部變量變化情況.注意: 取消斷點(diǎn)最原始的方法 ,通過 window.alert(信息); document.write(“信息”);u 如何處理js的bugjs 代碼發(fā)生錯誤,如何定位其錯誤呢

30、? 1. 可以通過程序員的經(jīng)驗(yàn)來判斷2. window.alert() 來輸出信息3. 使用firebug 的 調(diào)式用具 cy-5,瀏覽器對象模型BOMu 函數(shù)u 為什么需要函數(shù)看一個實(shí)際的需求: 輸入兩個數(shù),再輸入一個運(yùn)算符(+,-,*,/),得到結(jié)果.<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><script type="text/javascript">var num1

31、=mpt("請輸入一個數(shù)");var num2=mpt("請輸入2個數(shù)");var oper=mpt("輸入運(yùn)算符號");/把num1, num2轉(zhuǎn)成floatnum1=parseFloat(num1);num2=parseFloat(num2);var res=0;switch(oper)case "+":res=num1+num2;break;case "-":res=num1-num2;break;case "*&quo

32、t;:res=num1*num2;break;case "/":res=num1/num2;break;default:window.alert("輸入的運(yùn)算符號錯誤");window.alert("res="+res);</script></html>如果我們在a.html, b.html, c.html我們都需要做這個計(jì)算.用代碼來實(shí)現(xiàn),上面的分析:1. 寫一個js文件,在該文件中封裝函數(shù)2. 在需要的地方引入js文件即可.比如在a.html中使用<script type=”text/javascri

33、pt” src=”js文件路徑”></script>代碼:funs.js碼/必然需要傳入?yún)?shù)num1,num2,operfunction jiSuan(num1,num2,oper)/把num1, num2轉(zhuǎn)成floatnum1=parseFloat(num1);num2=parseFloat(num2);var res=0;switch(oper)case "+":res=num1+num2;break;case "-":res=num1-num2;break;case "*":res=num1*num2;brea

34、k;case "/":res=num1/num2;break;default:window.alert("輸入的運(yùn)算符號錯誤");/return 語句表示返回? 返回給哪個!(誰調(diào)用就返回給誰)return res;a.html:<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><!-在使用函數(shù)前,引入js文件-><script type="te

35、xt/javascript" src="funs.js"></script><script type="text/javascript">var num1=mpt("請輸入一個數(shù)");var num2=mpt("請輸入2個數(shù)");var oper=mpt("輸入運(yùn)算符號");window.alert("res="+jiSuan(num1,num2,oper);</scri

36、pt></html>u js函數(shù)的分類1. 自定義函數(shù) 基本用法是:function 函數(shù)名(參數(shù)列表)/語句/return 語句說明:(1) 函數(shù)的規(guī)范問題, 可以用字母開頭, 不要用數(shù)字開頭. 可以包括字母/數(shù)字/_/$(2) 參數(shù)列表可以多個(js支持可變參數(shù))(3) return 語句可以有,也可以沒有. 最多只能有一個return2. 系統(tǒng)函數(shù)(js語句本身提供)u 函數(shù)的調(diào)用方式 函數(shù)名(參數(shù)值); (通過函數(shù)名調(diào)用)function test(val)window.alert(val);test(“hello”); 通過函數(shù)指針去調(diào)用基本用法var 變量=函數(shù)名

37、;變量(參數(shù)列表);代碼function test(num1,num2)return num1+num2;/window.alert(test);/下面的話,相當(dāng)于把test的函數(shù)指針,賦給了my這個變量./因此my也執(zhí)行test函數(shù)的代碼 var my=test;window.alert(my); var res=my(67,90);window.alert("00"+res);特別說明:1. 如果一個函數(shù)有返回值,你可以接收后再使用,也可以直接使用.2. 如果一個函數(shù)沒有返回值,但是你卻使用,則會提示 undefined;u js的函數(shù)調(diào)用過程基本調(diào)用原則:一個測試題,

38、加深大家對函數(shù)調(diào)用機(jī)制理解function abc(num1) if(num1>3) abc(-num1); document.writeln(num1); abc(5);執(zhí)行的結(jié)果是:3 3 4分析圖是:函數(shù)調(diào)用:使用遞歸的方法來計(jì)算 n!/非遞歸function test1(n)var res=1;for(var i=1;i<=n;i+)res*=i;/遞歸-遞歸的條件function test2(n)if(n=1)return 1;elsereturn test2(n-1)*n;使用遞歸的方法計(jì)算 f(n)=2*f(n-1)+3 , 已知 f(1)=1;f(3000)編寫一個

39、函數(shù),接收n,計(jì)算其值.function fun1(n)if(n=1)return 1;elsereturn 2*fun1(n-1)+3;u js使用小結(jié)函數(shù)的參數(shù)列表可以是多個參數(shù)列表可以是多個,并且數(shù)據(jù)類型可以是任意的類型js函數(shù)支持可變參數(shù)代碼:function test4()/window.alert(arguments.length);var res=0;for(var i=0;i<arguments.length;i+)/document.write(argumentsi+"-");res+=argumentsi;return res;/需求我希望test

40、4函數(shù)可以計(jì)算我給出的數(shù)的結(jié)果和(但是我給的參數(shù)個數(shù)不確定)document.write(test4(45,89,90,78.8);通過這段代碼,我們可以得出這樣的結(jié)論: 在同一個作用域(在同一個頁面) js函數(shù)是不能有重復(fù)名字, 同時我們也知道 js 函數(shù)不支持函數(shù)的重載.u js的數(shù)組的介紹為什么需要數(shù)組?問題: 王大爺有6只烏龜,它們的體重分別是3kg,5kg,1kg, 3.4kg,2kg,50kg 。請問這六只烏龜?shù)目傮w重是少?平均體重是多少? 請你用現(xiàn)在掌握的技術(shù)編一個程序解決<script>var weight1=3;var weight2=5;.var total=w

41、eight1+weight2+.+weight6;var average=total/6;</script>我們需要這樣一種數(shù)據(jù)類型,它可以幫助我們管理一組數(shù)據(jù).->數(shù)組.快速入門的案例: 用數(shù)組的方法來完成 王大爺養(yǎng)烏龜?shù)膯栴}:<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><script type="text/javascript">/創(chuàng)建一個數(shù)組var a

42、rr1=3,5,10,34.8,50,10;/說明,數(shù)組的下標(biāo)是從0/window.alert(typeof arr1);/通過對象名.constructor 可以顯示該對象的構(gòu)造方法是什么?/window.alert(arr1.constructor);/遍歷我們的數(shù)組var total_weight=0;for(var i=0;i<arr1.length;i+)/document.write("<br/>"+arr1i);total_weight+=arr1i;document.write("總體重是="+total_weight+

43、" 平均體重="+total_weight/arr1.length);</script></html>u 數(shù)組的基本使用 如何創(chuàng)建數(shù)組方法1 var arr=元素1,元素2. 其實(shí)也可以這樣創(chuàng)建空數(shù)組 var arr=;元素的個數(shù)可以任意,元素的類型可以任意方法2.var arr=new Array(); 如何訪問數(shù)組的數(shù)據(jù)1. 指定訪問某個元素?cái)?shù)組名下標(biāo)號, 下標(biāo)號默認(rèn)是從0 開始編號.2. 遍歷數(shù)組for(var i=0;i<數(shù)組.lenght;i+)數(shù)組i;for(var key in 數(shù)組)數(shù)組key; 如果下標(biāo)越界會怎樣?報(bào) unde

44、fine js的數(shù)組是否能夠動態(tài)的增長var a=2,3;a2=56;alert(a2);說明js的數(shù)組可以動態(tài)增長. 數(shù)組在內(nèi)存中怎樣存在.php程序中,通過一個函數(shù)傳遞數(shù)組,是值傳遞,還是引用傳遞?結(jié)論是默認(rèn)是值傳遞(拷貝.)js代碼中,通過一個函數(shù)傳遞數(shù)組,是引用傳遞function test2(val)/val0 訪問第一個元素.val0=900;arr=1,2,3;/調(diào)用函數(shù)test2(arr);for(var i=0;i<arr.length;i+)document.write("*"+arri);輸出是 900*2*3畫圖說明;通過下面的代碼,我們來說明

45、js的數(shù)組是怎樣存在內(nèi)存的:function test2(val) /val0 訪問第一個元素. val0=900; arr=1,2,3;【1】 /調(diào)用函數(shù) test2(arr); for(var i=0;i<arr.length;i+) document.write("*"+arri); 分析圖:u 數(shù)組的常用的屬性和函數(shù) length 屬性可以返回該數(shù)組的大小(遍歷) split 函數(shù),可以拆分字符串.var str="abc hello boy"var arr=str.split(" ");document.write(a

46、rr+ arr.length);u 數(shù)組小結(jié): 數(shù)組可存放任意類型的數(shù)據(jù) 數(shù)組大小不必事先指定,可以動態(tài)增長 數(shù)組名可以理解為指向數(shù)組首地址的引用. 數(shù)組元素默認(rèn)從0開始編號的.u js的二維數(shù)組var arr1=元素1,元素2.如果我們的元素又是一個數(shù)組,則這個一維數(shù)組就成了二維數(shù)組. 創(chuàng)建二維數(shù)組舉例var arr=1,4,90,4,'hello'/如何遍歷我們的二維數(shù)組for(var i=0;i<arr.length;i+)var ele=arri;/window.alert(ele.constructor);/對ele進(jìn)行遍歷for(var j=0;j<el

47、e.length;j+)window.alert(elej); 二維數(shù)組的理解和指定訪問某個變量測試題:/*0 0 0 0 0 00 0 1 0 0 00 2 0 3 0 00 0 0 0 0 0*/定義二維數(shù)組var arr2=0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,3,0,0,0,0,0,0,0,0;for(var i=0;i<arr2.length;i+)var size=arr2i.length;for(var j=0;j<size;j+)document.write(arr2ij+"&nbsp;");document.wri

48、te("<br/>");/var arr=new Array();arr00=1;思考題:請編寫一個函數(shù),可以接收一個數(shù)組,然后要求把這個二維數(shù)組轉(zhuǎn)置:,所謂轉(zhuǎn)置就是行列數(shù)據(jù)互換課堂練習(xí)function reverse(arr1)/.u js的排序我們這里只介紹一下冒泡排序法:其它方法可以參考 php 的排序章節(jié)算法代碼:<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><s

49、cript type="text/javascript">var arr=0,-1,90,-18,900,90,78;var temp=0;for(var i=0;i<arr.length-1;i+) /定小循環(huán) for(var j=0;j<arr.length-1-i;j+) if(arrj>arrj+1) /交換 temp=arrj; arrj=arrj+1; arrj+1=temp; /輸出數(shù)組 document.write(arr);</script></html>u js的查找1. 順序查找一個一個的比較,如果是則查

50、找到.var arr=3,5,90,12,-23;var findVal=90;var flag=false;for(var i=0;i<arr.length;i+) if(arri= = findVal)document.write(”找到了這個數(shù) 下標(biāo)是”+i);flag=true;if(!flag)document.write(”一個都沒有找到”);2. 二分查找面試題: 一定掌握!/二分查找遞歸/二分查找要保證我們的數(shù)組是一個有序的./思想是/首先把數(shù)組的中間這個數(shù)找出,然后和你要查詢的數(shù)比較/ 你要查詢的數(shù)比中間的數(shù)大. 則說明我們應(yīng)當(dāng)該數(shù)組的右邊后邊查詢/ 你要查詢的數(shù)比中間

51、的數(shù)小 .則說明我們應(yīng)當(dāng)該數(shù)組的左邊前邊查詢/ 你要查詢的數(shù)等于中間的數(shù), 說明找到 var arr=1,90,100,123,4000;function binarySearch(findVal,arr,leftIndex,rightIndex)/退出條件if(rightIndex<leftIndex)document.write("查詢沒有結(jié)果");return;/代碼:/找到中間數(shù)的下標(biāo)var midIndex=Math.round(leftIndex+rightIndex)/2);if(arrmidIndex<findVal)binarySearch(f

52、indVal,arr,midIndex+1,rightIndex);else if(arrmidIndex>findVal) binarySearch(findVal,arr,leftIndex,midIndex-1);elsedocument.write("找到 下標(biāo)是"+midIndex);/binarySearch(findVal,arr,leftIndex,midIndex-1);/調(diào)用的格式binarySearch(100,arr,0,arr.length-1);u 基于對象編程和面向?qū)ο缶幊探蟹▍^(qū)分js 中我們可以認(rèn)為這個叫法一致.u js的面對對象編程的介紹js是一種支持面向?qū)ο缶幊痰哪_本語句, 它有繼承,封裝,多態(tài)的特點(diǎn).課程中 基于對象= =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論