一.Javascript概述
1、Javascript是一種鬆散類型語言,變數不必具有一個明確的類型。變數實現方法類似Hash表和關聯陣列,將屬性名稱映射為任意類型的屬性值或引用。
2、Javascript是一種解釋型語言,核心語言有未經處理資料類型:數字、字串、布爾值。內部支援數組、日期和Regex對象。
3、Javascript的版本,根據ECMA-262標準,Javascript語言的光放名稱為ECMAScript。
4、運行在瀏覽器的Javascript稱為用戶端JS,可以理解為JS為靜態頁面增加了行為(響應使用者的操作),使頁面變為動態(可響應操作)。
簡單的例子:
1、<script language="javascript" src="目標" type="text/javascript"></script> 可以將外部的JS代碼塊串連入<Script>標記的位置。
2、<button onclick="alert('Hello World!');">Click</button>
二.Javascript文法結構
1、JS程式採用Unicode字元集編碼(16位)。所以JS程式中每個字元都是2個位元組表示。
2、JS大小寫敏感,但HTML不區分大小寫,但建議養成習慣區分大小寫。JS代碼會忽略空白(Space)、換行(Enter)、定位字元(Tab)。
3、JS中語句結尾可以不用分號,但要求必須分行寫代碼。但為了習慣,要求結尾有分號。
4、JS注釋程式設計語言一樣。//代表注釋一行 /*可以注釋若干行*/。
5、JS支援直接量,例如1、2、'h'、true……表示數組和對象可以用直接量表示:數組[1,2,3,4] 對象{x:1,y:2} 對象的表示結構是JSon(JavaScript Object Notation).
6、標識符、關鍵字、保留字的關係。
三 Javascript資料結構
1、基礎資料型別 (Elementary Data Type):3+2 3:數字、文本字串、布爾值 2:null(空) undefined(未定義)
2、複合資料型別:對象 JS對象分為兩種:1、已命名的值的無序集合 2、有編號的值的有序集合 又稱數組。
3、特殊的對象——函數(function)。一般將函數看作獨立於對象和數組的資料類型。
4、Javascript核心定義了一些專用對象:Data表示日期、RegExp類表示Regex、Error類表示返回的錯誤對象(異常處理)。
5、JS中的數字不區別整型和浮點型,所有數都是由浮點型表示。“-”號加在任何直接量都表示它的負數,但它不是數值直接量的一部分,它是一元求反運算子。
6、數值進位 16進位以0x或0X開頭。八進位直接量以0開頭。(最好不要使用八進位,相容性問題)。
7、數學運算可以使用Math.方法。
8、數值界限和特殊值。 (-)Infinity表示數超過所能表示的最(小)大值 Number.MAX_VALUE可表示的最大數字 Number.MIN_VALUE 可表示的最小數字
9、NaN (Not A Number) 當轉換產生未定義的錯誤時,會產生NaN,它和任何值不相等(包括自己)使用isNaN()來檢測它的值。使用isFinite()來檢測一個數字是否是NaN、正無窮大、負窮大。
10、字串string JS裡沒有char,只能用長度為1的string表示。 直接量用'和"表示,兩種引號可以互相包含,支援使用轉意字元。因為HTML也支援兩種引號表示字元,所以建議HTML和JS分別使用一種,方便編程。轉意字元詳情需要查表,這裡只介紹常用幾個:\b退格 \n換行 \t水平製表 \" \' \\分別表示" ' \ \uXXXX 表示Unicode XXXX的值。如果轉意失敗,則忽略“\”。
11、字串函數 var s="Hello," + "World"; s.length表示長度 s.charAt(2) 取出第2個字元 s.substring(1,4) 從第2個字元開始,取到第4個字元 這裡需要注意,第一個參數是開始的Index(整個串從0開始),截取數包括第一個參數表示的字元。第二個參數是截取的終點位置,截取數不包括第二個參數表示的字元,取前不取後。 s.indexOf('a'); 在串s中尋找第一個a出現的位置。
12、字串與數字互轉 數字和字串用“+”時,會先轉成字串後串連在一起。 所以將數字n轉換為字串s有以下辦法:1、s=n+""; 2、s=String(n); 3、s=n.toString(); 同時,將字串s轉換為數字n時有以下方法:1、n=s-0; 2、n=Number(s); 3、n=parseInt/parseFloat(s); 需要注意,當對字串使用數字運算子時也會實現自動轉換(因為是鬆散類型語言)。 parseInt/parseFloat的參數(第一個要轉換的字串,第二個轉換的進位數) 如果轉換失敗則返回NaN。
13、布爾值轉換 true -》'true'-》1 false-》'false'-》0 數字轉Bool 如果是0或NaN則轉為false,其他true. 如果Null 字元串則轉換為false,其他轉換為true。空值和未定義都被轉成false,其他都是true。 將其他類型a轉換為布爾類型的b的方法:1、a=Boolean(b); 2、a=!!b; “!"為非運算子。
14、函數 常用定義:
function myfunc(x)
{
return x*x;
}
var myfunc=new function(x) lambda函數
{
return x*x;
}
15、對象 對象名.屬性名稱 或 對象名[屬性名稱] 建立對象可以用建構函式構造 var o =new object(); 設計屬性 o.x=1; o.y=2; 也可以使用JSON直接量來建立對象。var o = {x:1,y:2};
16、對象轉換 非Null 物件轉為布爾值 會為true,如果轉換成string,則自動調toString(),如果轉成數字,則先調valueOf()方法,如果返回自己則先toString()再parse轉成數字。
17、數組 建立:var a=new Array(1,2,3,4); a[0]=1; new Array(長度); 數組直接量[1,2,3,"aaa",[1,2,3]]。
18、null 表示“無值” 轉為Bool為false 轉為數字為0 轉為字串為"null"
19、undefined 表示未定義、未聲明。 undefined 和 null 不相等。但undefined==null結果為true。可以使用===來區分,undefined===null為false。
20、Date對象 var now =new Date(); now.toLocaleString() 返回本地時間串 now.getDay()……這個對象以後我會補上專門的總結。建構函式可以設定構造時間:var totime = new Date(2010,3,31);
21、Regex 用於模式比對以及實現尋找替換等功能。用RegExp對象表示 直接量用兩個“/”之間的文本表示。 如/^HTML/ 此對象將在以後章節總結。
22、Error對象 用於錯誤處理,每個Error有一個message屬性,存放JS中特定的錯誤訊息。預定義的錯誤有Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError和URIError 以後會有專門章節總結。
23、類型轉換小結 可以參照這篇文章:http://www.cnblogs.com/dreampuf/archive/2009/01/22/1380075.html
24、基礎資料型別 (Elementary Data Type)的封裝對象 三種基礎資料型別 (Elementary Data Type)都有一個響應的對象類。Number、String和Boolean類。當我們使用基礎資料型別 (Elementary Data Type)時,JS內部會為基礎資料型別 (Elementary Data Type)建立一個封裝對象,因此有了屬性和方法。瞬間轉換機制。
日新成員作業:
1、親自實踐各種類型的建立和轉換。
2、用HTML+JS 製作一個計算機軟體。
下次課時間:2010-4-7 7點 3604
本章內容詳情參照《Javascript權威指南》前三章內容