1. 變量的定義和作用域
var a = 1; 類型爲Number
var a = "1"; 類型爲String
Number和String都是JS內置的對象。
作用域: 在函數外面定義--全局; 在方法內部定義--在方法體內有效。
變量是弱類型的,整數與字符串相加得到字符串。
不區分單引號和雙引號;
2.語句、代碼和代碼塊
JavaScript是發出的指令。每行句尾可以加上分號,多句同一行需要用分號隔開。代碼塊是用來更好的組織代碼的。代碼塊使用花括號包裹。
3.註釋
單行註釋://
多行註釋:/*開頭,*/結尾
4.運算符
1) 算術符號:+、-、*、/、%(取餘,保留整數)、++、--
說明:/除不盡有小數,能除盡爲整數。JS不區分整數小數?
2)賦值運算符:=、+=、-=、*=、/=、%=
3)比較運算符:==、===(全等,值和類型)、!=、>、<、>=、<=
4)邏輯運算符:&&、||、!
5)條件賦值: ? :
variablename=(condition)?value1:value25.分支語句
1)if...else... if...else if...else
2)switch...case...
switch():判讀的類型無限制。c中就只能是int型和char('a')型。
default不匹配條件時的操作。
6.循環語句
1)for(var a = 0; a < 10; a++)
2)while(a < 10) { a++ } ; do { a-- } while(a>0)
break:退出循環; continue:跳到下次循環。
3) for/in - 循環遍歷對象的屬性
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
7.函數
<script>
function goToUrl(strUrl)
{
location.href = strUrl;
} <pre name="code" class="html"><script>
1) 函數需要返回值時,用return即可。
2) 函數可以在HTML事件/ FORM / JavaScript 中被調用,如:
a. HTML元素事件回調: <body οnlοad="goToUrl('http://www.baidu.com')" > b. FORM元素事件回調 <select name="somelist" οnchange="onSomeThingChanged()">
c. 超鏈接目標
<a href="javascript:goToUrl('www.baidu.com')" > go </a>
d. 直接在JavaScript中調用 <script> goToUrl(”www.baidu.com"); </script>
8. 類
一般的JavaScript是不需要使自定義類,不會這麼複雜。難調試,不便閱讀。如果一定要寫什麼複雜的功能,如菜單樹之類的,就得寫一點類來完成了。
1) 類定義a. 不帶參數
<script>
function SampleClass()
{
// 變量變量定義
this.nId = 10;
// 成員函數定義
this.plusId = function (nPlus)
{
return this.nId + nPlus;
}
}
</script>
b. 帶參數
function MenuItem(l, h, t)
{
this.label = l;
this.href = h;
this.target = t;
this.toHtml = function()
{
var html = "<a href='" + this.href + "' ";
if(this.target != null)
html += (" target='" + this.target + "' ");
html += " >" + this.label + "</a>";
return html;
}
}
2)創建類的實例
var item = new MenuItem("haha", "http://www.baidu.com", null);
3)類需要注意
b. 成員函數如果想返回值,就用return,想return什麼類型都不必事先聲明,直接return就好
c. 對於學習C++和Java的程序員來說,要明白var p = new SomeClass();這句中的new其實就是創建一個對象並返回其指針
d. 考慮使用Object類9. Object類
大多數情況下都不需要自己聲明一個類,可以直接使用Object類來定義一個結構,而無需事先聲明這個結構的形式。
function createObject()
{
var obj = new Object();
obj.x = 10;
obj.y = 11;
return obj;
}
這個函數隨意的創建了一個object,爲其添加成員 x, y,並沒有通知任何人(無prototype聲明)。而使用者也是直接就可以調用其 o.x , o.y<script>
var o = createObject();
document.writeln("x=" + o.x + ", y=" + o.y);
</script>
10. 數組Array
<script>
// 創建
var a = new Array();
// 遍例
for(var i=0; i<a.length; i++)
{
var e = a[i];
}
// 添加
var item = new MenuItem("000");
this.itemArray.push(item);
</script>
數組作爲成員變量
function Menu()
{
this.itemArray = new Array();
this.addItem = function(l, h, t)
{
var item = new MenuItem(l,h,t);
this.itemArray.push(item);
};
}
1) 添加元素
push 方法將新元素添加到一個數組中,並返回數組的新長度值。
arrayObj.push([item1 [item2 [. . . [itemN ]]]])
參數:
arrayObj--必選項。一個 Array 對象。
item, item2,. . . itemN--可選項。該 Array 的新元素。
說明:
push 方法將以新元素出現的順序添加這些元素。如果參數之一爲數組,那麼該數組將作爲單個元素添加到數組中。如果要合併兩個或多個數組中的元素,請使用 concat 方法。
var arr = new Array(0,1,2,3,4);
// 參數是一個或多個
var len = arr.push(5,6);
//len = arr.push(7);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
2) 刪除元素
pop 方法
移除數組中的最後一個元素並返回該元素。
arrayObj.pop( )
必選的 arrayObj 引用是一個 Array 對象。
說明
如果該數組爲空,那麼將返回 undefined。
shift 方法
移除數組中的第一個元素並返回該元素。arrayObj.shift( )
必選的 arrayObj 引用是一個 Array 對象。
說明
shift 方法可移除數組中的第一個元素並返回該元素。
var arr = new Array(0,1,2,3,4);
var remove = arr.pop();
alert(remove);
alert(arr.length);
splice 方法
從一個數組中移除一個或多個元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
參數:
arrayObj--必選項。一個 Array 對象。
start--必選項。指定從數組中移除元素的開始位置,這個位置是從 0 開始計算的。
deleteCount--必選項。要移除的元素的個數。
item1, item2,. . .,itemN--必選項。要在所移除元素的位置上插入的新元素。
說明:
splice 方法可以移除從 start 位置開始的指定個數的元素並插入新元素,從而修改 arrayObj。返回值是一個由所移除的元素組成的新 Array 對象。
如果你不想增加新的元素進去,那麼不要傳遞第三個參數即可!
var arr = new Array(0,1,2,3,4);
// 刪除從2開始的兩個元素,位置從0開始
// 返回移除元素的數組
var reArr = arr.splice(2,2);
// 可以在移除元素的位置替換新的元素進去
//只是從移除開始位置進行增加新元素,如果你移除兩個元素,你完全可以增加10個新元素進去
//var reArr = arr.splice(2,2,6,7,8,9);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
concat 方法 (Array)
返回一個新數組,這個新數組是由兩個或更多數組組合而成的。
array1.concat([item1[, item2[, . . . [, itemN]]]])
參數:
array1 --必選項。其他所有數組要進行連接的 Array 對象。
item1,. . ., itemN--可選項。要連接到 array1 末尾的其他項目。
說明:
concat 方法返回一個 Array 對象,其中包含了 array1 和提供的任意其他項目的連接。
要加的項目(item1 … itemN)會按照從左到右的順序添加到數組。如果某一項爲數組,那麼添加其內容到 array1 的末尾。如果該項目不是數組,就將其作爲單個的數組元素添加到數組的末尾。
以下爲從源數組複製元素到結果數組:
對於從正被連接到新數組的數組中複製的對象參數,複製後仍然指向相同的對象。不論新數組和源數組中哪一個有改變,都將引起另一個的改變。對於連接到新數組的數值或字符串,只複製其值。一個數組中值有改變並不影響另一個數組中的值。
var arr = new Array(0,1);
var arr2 = new Array(3,4);
var arr = arr.concat(arr2);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
執行順序與生命週期
1) 從上到下依次執行/解析,調用一個function時,必須保證該function已經被解析/聲明瞭。這就是一般要把function定義在<head>的原因。
2) 所有的function與變量只在本頁面內有效,當離開頁面後,新的頁面內無法訪問上一頁內聲明的變量或函數。如果一定要訪問,可以使用Cookie也存一下,到下一頁再讀出來。