js學習——函數

來源:互聯網
上載者:User

標籤:div   檢測   隱式   app   ++   bsp   結果   作用   sel   

函式宣告

function funName(parameter){}

函數運算式,並把函數儲存在變數x中

//不用給函數名,後續並不能直接用給定的函數名調用var x = function(a){return a};x;//返回的是一個函數對象x();//調用函數

用函數建構函式定義一個函數(參數, 運算式)

var myFunc = new Function("a", "b", "return a + b");

函數提升:聲明會自動提前,賦值的不提升

myFunc(10);function myFunc(x){return x;}

函數自動調用自己執行

(function callSelf(){alert("i call myself");})();

函數是對象

function myFunc(){};typeof myFunc;//類型為 function

顯式參數:形參(C++)      隱式參數:實參(C++)

參數規則:對隱式參數不進行類型檢測,也不進行個數檢測

預設參數:如果沒有給隱式參數,那麼顯式參數的值為undefined

function myFunc(x){    x = x||0;//若x是undefined,則將其值設為0}

arguments對象:function的內建屬性

function myFunc(){    var n = arguments.length;//參數的個數    //遍曆輸出每一個參數    for(var i = 0; i < n; i++)    {         alert(arguments[i]);    }}

參數傳遞:按值傳遞(C++)

//不是對象的是按值傳遞var a = 0;function ma(a){a = 4;}ma(a);//結果沒有變化//隱式參數是按值傳遞var c = [1,2,3];function mc(){arguments[0] = 3;}mc(c);//c的值沒有變化

參數傳遞:按引用傳遞(C++)

var b = [1,2,3];//顯示參數,且參數是一個對象function mb(b){b[0]=3;};mb(b);//b的值發生變化

函數調用,有4種調用方式,區別在於this的初始化

this指向調用函數的對象

//作為一個函數調用function myFunc(){    return this;}//返回window對象,因為預設屬於window全域對象myFunc();
//作為對象的方法調用var myObj={    myFunc:function(){return this;}};myObj.myFunc();//返回myObj對象:Object {myFun: function}
//用建構函式調用函數,建構函式中的this沒有任何值function myFunction(){return this;}//this指向執行個體化後的對象:myFunction{}var myFunc = new myFunction();
//作為函數方法調用函數function myFunction(a,b,c){return this;}//第一個參數myObj會成為thisvar a = 0, b = 0, c = 0;myObj = myFunction.call(myObj, a, b, c);//按參數一個個對應給出var arr = [0, 0, 0];myObj = myFunction.apply(myObj, arr);//參數組合成一個數組

js閉包(python中也類似)

可訪問上一層函數範圍裡變數的函數

var add = (function() {    var counter = 0;    return function() { return counter += 1; };})();//自調用函數add();add();//計數器會遞增
var x = function(){return function(){alert("abc");};};x; //function(){return function(){alert("abc");};};x(); //function (){alert("abc");}x()();//會執行alert("abc")

js學習——函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.