javascript學習筆記(一)
以前沒徹徹底底的看過js相關的學習資料,覺得很有必要再看看基礎的東西。一起來學習。
1 , javascript字符集:
javascript 采用的是 Unicode 字符集編碼。
為什么要采用這個編碼呢?
原因很簡單, 16 位的 Unicode 編碼可以表示地球人的任何書面語言。這是語言 國際化的一個重要特征。 ( 大家也許見過用中文寫腳本,比如: function 我的函數 () {} );
Javascript 中每個字符都是用 2 個字節表示的。(因為是 16 位編碼)
2 , 大小寫敏感:
js 是一種區分大小寫的語言。
注意下:以前我也犯過的錯誤。
HTML 是不區分大小寫的。經??匆娪腥诉@么寫 ,
<input type=”button” onClick=”a()” /> (這樣寫是對的)
如果放到 JS 中,就必須使用 onclick (小寫哦!)
同時 XHTML 中也只能使用小寫。
這個我們并不需要太關心,象這種問題,其實都可以自己給自己定一個標準,自己寫程序的時候全部小寫。
另外每行程序后 分號 也是一樣,我們都寫上。
3 , 注釋:
單行:
// 注釋 1
/* 注釋 2 */
多行:
/* 注釋 3
* 注釋 3
* 注釋 3
*/
4 , 標識符:
標識符就是一個名字,用來命名變量和函數。
規則:第一個字母必須是字母,下劃線 (_) ,或美圓符號 ($) 。
為什么第一個字母不能為數字?
如果第一個為數字, js 很容易就把它當作數字處理了,那么命名就沒意義了, js 規定了后,就很容易的區分了標識符和數字了。
5 , 直接量:
就是程序中直接顯示出來的數據值。
比如: 12 , 1.2 , “ hello “ , true , null , [1,2,3,4]
這些都是直接量。
6 , 保留字和關鍵字:
具體是哪些,可以去 google.cn 。
其實我們只要不取一些特郁悶的名字,都不會沖突的。
7 ,js 數據類型:
3 種基本的類型;數字,字符串和布爾值。
2 種小數據類型: null 和 undefined . ( 為什么叫小數據類型?因為他們只定義了一個值 )
1 種復合類型: object. ( 在這個類型中,它的值可以是基本數據類型,也可以是復合類型,比如其他的 object. )
注意:在對象中有一個特殊的對象 ----function.( 它是一個可以執行代碼的對象 .)
其他的一些對象 :
數組:
Date 類 : 是日期的對象。
RegExp 類: 正則表達式的對象。
Error 類: js 中發生錯誤的對象。
8 , 使用數據類型注意的地方:
1): 數字:
由于數字有什么 8 進制, 10 進制, 16 進制等。。。
八進制: var num = 011; // 以 "0" 開頭
十六進制: var num =0x1f; // 以 "0x" 開頭
所以對于 js 這個都能識別的語言來說,就必須得注意。
alert(377); // 377
alert(0377); //255 = 3 * 64 + 7 * 8 + 7 * 1
進行算術運算有個重要的對象: Math.
具體可以去網上下載手冊,查詢里面的方法。
2 個有用的函數: isNaN() 和 isFinite()
isNaN() : 用于檢查其參數是否是非數字值。 // 提示:是非數字哦。 (not a number)
document.write( isNaN (0) ) // 返回 false
document.write( isNaN (5-2) ) // 返回 false
document.write( isNaN ("Hello") ) // 返回 true
isFinite(number) 函數用于檢查其參數是否是無窮大。
如果 number 是有限的,則返回 true. 如果 number 是 NaN( 非數字 ) 或者是無窮大,則返回 false;
2): 字符:
‘you’re right’;
這樣寫的話 js 會誤以為 在 you 字母后就結束了,引起錯誤。
所以當遇到這種情況的時候,必須用到轉義。
我們可以這么寫:
‘you"’re right’;
另外:你可以 google.com 搜索 轉義序列表 。
字符串的簡單操作例子:
var a = "cssrain";
var b = a.charAt(a.length-1); // 從字符串 a 中截取最后一個字符。 輸出: n
var c = a.substring(0 , 2); // 從字符串 a 中截取第 1 , 2 個字符。 輸出: cs
var d = a.indexOf('s'); // 從字符串 a 中查找 第一個 s 出現的位置。 輸出: 1
從例子可以看出,基數都是從 0 開始的。
var e = a.substring( a.length-1 ); // 可以看出, substring 第 2 個參數不寫的話,
// 默認 是到最后。
var f = a.substring( a.length-1 , a.length);// 等價于
3): 數字跟字符之間的轉換:
數字轉字符:
var number_to_string = number + “ ”; // 方法 1 :添加一個空的字符串。
var number_to_string =String(number); // 方法 2 :使用 String() 函數。
var number_to_string =number. toString(); // 方法 3 :使用 toString() 函數。
注: toString() 方法默認是以 10 進制轉換。
如果要使用 8 進制轉換可以 這么寫: number. toString(8);
字符轉數字:
var string_to_number = string – 0 ; // 方法 1 : 字符串減去 0 。
var string_to_number = Number(string) ; // 方法 2 :使用 Number () 函數。
var string_to_number = parseInt(string) ; // 方法 3 :使用 parseInt () 函數。
方法 1 中不能 用 string+0 ; 這樣會導致字符串拼接,而不是類型轉換。
方法 2 中的 Number 函數轉換,比較嚴格。
比如:
var a = "19cssrain86";
var b = Number(a); // 輸出 NaN.
如果我們使用方法 3 。
var c = parseInt(a); // 輸出 19
可以看出 parseInt() 會自動忽略非數字的部分。
parseInt() 只取整數部分,忽略小數部分。
parseFloat() 會把小數部分也取到。
和 toString() 一樣, parseInt 也有進制,默認是 10 進制。
如果想使用 8 進制,可以這么寫: parseInt( “077” , 8 ); // 輸出 63 = 7 * 8 + 7
當字符以 0 開頭的時候,我們必須把 第二個參數 指明,不然 js 可能會以 8 進制去轉換。
4): 布爾類型:
布爾在數字環境中: true 轉換為 1 , false 轉換為 0 。
在字符環境中: true 轉換為 “true” , false 轉換為 “false” 。
布爾轉換:
var x_to_Boolean = Boolean(x); // 方法 1 :使用 Boolean () 函數。
var x_to_Boolean = !x; // 方法 2 :使用 感嘆號。
5): 函數的定義:
方法 1 :普通定義
function square(x){
return x*x;
}
方法 2 :函數直接量定義
var square = function(x){ return x*x; } // 推薦使用
方法 3 :構造參數
var square = new Function(“x”,”return x*x;”); // 效率低
6): 對象:
如果有一個名為 cssrain 的對象 , 他有一個高度 height 的屬性。
那么我們可以這么引用:
cssrain.height;
還可以使用關聯數組定義: cssrain[“height”];
創建對象:
方法 1 :
var point = new Object();
point.x = 3;
point.y = 5;
方法 2 :使用對象直接量
var point = {x:3 , y:5 }
當然 json 也可以咯。
對象在字符的環境下,會調用 toString() 方法。
數字環境下,會調用 valueOf() 方法。
布爾環境下,非空對象為 true;
7): 數組:
常規數組:以非負整數做為下標。 image[0]
關聯數組:以字符做為下標。如: image[“width”]
js 不支持多維數組,但數組里面可以嵌套數組。
創建數組:
方法 1 :
var a = new Array();
a[0] = “1”;
a[1] = 2;
a[2] = { x:1, y:3};
方法 2 :
var a = new Array(“1” , 2 , {x:1,y:3} );
注意下:如果只傳了一個參數;比如 var a = new Array(3);
那么它是表示: 3 個未定義元素 的 新數組。
方法 3 :使用數組直接量
var a =[“1” , 2 , {x:1 , y :3 }]; // 注意外面的 括號 , 不是花 括號。
8):null 和 undefined :
null 表示無值;
undefined : 使用一個并未聲明的變量,或者使用了已經聲明的變量但未賦值或者使用了一個并不存在的屬性。
undefined==null
如果要區分:
可以使用 === 或者 typeof 運算符。
9 , 新手常遇到的疑惑:
var s =”you are right”;
var b = s.substring(s.lastIndexOf(“ ”)-1 , s.length);
疑惑: s 是對象還是字符串,為什么字符串會有方法呢?
回答: s 是字符串。之所以有方法 ,是因為 string 類型 有一個相應的對象類( String )。
同樣數字和布爾都有相應的 Number , Boolean 類。
Js 會內部進行相應的包裝對象。 String 對象就替換了原始的字符串。
總結:
簡單了介紹了 js 中的一些概念(詞法結構) 和 數據類型(部分)。
好了,今天就說到這里, 明天我們 繼續。 ^_^ 。