javascript 函數

1、函數的定義數組

一、通常函數ide

//通常函數
//
定義函數f1 function f1(x, y) { console.log("x的值:", x) console.log("y的值:", y) return x+ y; } //調用函數f1 ret = f1(10, 15) console.log("x+y=",ret)

二、匿名函數函數

/*
匿名函數
兩個數比較
 */
//聲明匿名函數
f2 = function (x, y) {
    if (x > y){
        return x;
    }else {
        return y;
    }
}
//調用匿名函數
ret = f2(5, 10);
console.log("最大值爲:", ret);

三、直接執行函數spa

/*
直接執行函數
求和
 */
ret = (function (x, y ) {
    // console.log(x+y)
    return x+y;
})(1, 2);
console.log(ret);

2、函數中的arguments對象

/*
函數中的arguments
arguments能夠當作一個數組,全部的實參都在這裏
 */
//定義函數
function f2(x, y) {
    console.log(arguments.length);
    for( var i=0 in arguments){
        console.log(arguments[i]);  //屬性[變量名稱]
    }
}
//調用函數
f2(5,4, 3, 4);

3、局部變量和全局變量生命週期

局部變量:在函數內部定義的變量作用域

全局變量:函數外部聲明的變量it

生命週期:局部變量,函數執行結束;全局變量,關閉網頁io

4、做用域console

局部->全局

/*
做用域
 */
var name = "tom";
function f1() {
    function inner() {
        var name = "joker"
        console.log(name);
    }
    return inner;
}

ret = f1();
ret();
// 結果:joker

5、詞法分析(瞭解)

一、過程

語義分析->執行代碼

二、詞法分析

當函數調用的前一瞬間,會先造成一個激活對象:Avtive Object(AO),並會分析如下3個方面:1:函數參數,若是有,則將此參數賦值給AO,且值爲undefined。若是沒有,則不作任何操做。2:函數局部變量,若是AO上有同名的值,則不作任何操做。若是沒有,則將此變量賦值給AO,而且值爲undefined。3:函數聲明,若是AO上有,則會將AO上的對象覆蓋。若是沒有,則不作任何操做。函數內部不管是使用參數仍是使用局部變量都到AO上找。

相關文章
相關標籤/搜索