標籤:object order es6 array info 區別 對象 資料類型 作用
一. 函數
JavaScript中的函數和python中的函數非常類似,只是在定義方式上有部分區別.
1. 定義函數 ;
函數只能返回一個值,如果要返回多個值,只能將其放在數組或對象中返回.
①. 普通函數 :
function f1 () {
console.log ("hello world");
}
f1(); //調用方法
②. 帶參數的函數 :
function f2 (a,b) {
console.log(arguments); //內建arguments對象
console.log(arguments.length);
console.log(a,b);
}
f2(a,b); //調用方法
③. 帶傳回值的函數 :
function sum(a,b) {
return a+b;
}
sum(a,b); //調用方法
④. 匿名函數 :
var sum = function(a,b) {
return a+b;
}
sum(a,b); //調用方法
⑤. 立即執行的函數 :
( function(a,b) { return a+b } ) (a,b);
※. ES6中允許使用" 箭頭 "( => )定義函數 :
var f = v => v;
f : 函數名
v : 函數參數 (箭頭左側) 如果函數有多個參數或者沒有參數,此位置要用圓括弧代替
v : 函數返回 (箭頭右側)
2. 函數的arguments參數 :
function f2 (a,b) {
console.log(arguments.length);
console.log(a,b);
}
f2(2,3);
輸出結果 : 2
2 3
即使函數設定的參數的個數,但是用了內建arguments參數的函數也可以接受任意數量的參數.
3. 函數的全域變數和局部變數 :
①. 全域變數 :
在JavaScript函數的外部聲明的變數是全域變數,網頁上所有指令碼和函數都可以訪問它.
②. 局部變數 :
在JavaScript含糊內部聲明的變數(使用var)是局部變數,所以只能在函數內部訪問它(該變數的範圍是函數內部).只要函數運行完畢,本地的局部變數就會被刪除.
③. 變數的生存周期 ;
JavaScript變數的生命週期從他們被聲明開始.
局部變數在函數運行完之後被刪除.
全域變數會在頁面關閉後刪除.
④. 變數的範圍 :
函數尋找變數會首先在函數內部尋找,找不到則到外層尋找,逐步找到最外層.
4. 詞法分析
JavaScript中在調用函數之前,會有一瞬間的時間去對函數進行詞法分析.
函數內部無論是使用參數還是使用局部變數都到AO上找.--*/
詞法分析過程 :
當函數調用的前一瞬間,會先形成一個啟用物件(Active Object),簡稱AO.
①. 函數設定形參,添加到AO屬性,並且值為undefined,即AO,參數 = undefined
函數運行接收實參,添加到AO屬性,將之前的undefined值覆蓋
②. 如果在分析參數時AO未添加變數屬性,則將變數屬性添加到AO且值為undefined,即AO.變數 = undefined
如果在分析參數時AO已經有了變數屬性,則變數屬性不做修改.
③. 如果函數內聲明了和分析變數得出的變數名相同的函數,則將對應的變數替換成函數.如果沒有聲明函數或者聲明的函數和分析變數的變數名不相同,則不做任何操作.
5. 內建對象和方法
JavaScript中的所有事物都是對象 : 字串, 數字, 數組, 日期, 等等.對象是擁有屬性和方法的資料.
類型 |
內建對象 |
介紹 |
資料類型 |
Number |
數字對象 |
String |
字串對象 |
Boolean |
布爾值對象 |
組合對象 |
Array |
數組對象 |
Math |
數學對象 |
Date |
日期對象 |
進階對象 |
Object |
自訂對象 |
Error |
錯誤對象 |
Function |
函數對象 |
RegExp |
Regex對象 |
Global |
全域對象 |
前端之JavaScript進階