JavaScript學(xué)習(xí)筆記之函數(shù)

一.不同的創(chuàng)建方式:

a.函數(shù)聲明:

function add(a,b){
    return a+b;
}

b.函數(shù)表達(dá)式:

var add=function(a,b){
    return a+b;
}

//IEF(Immediately Executed Function)立即執(zhí)行
(function(a,b){
    return a+b;
})()

//函數(shù)對(duì)象作為返回值
return function(){
};

//NFE(Named Function Expression) 命名式函數(shù)表達(dá)式
var add=function foo(a,b){
    return a+b;
}

c.Function構(gòu)造器

var func=new Function('a','b','console.log(a+b);');
func(2,3);

var func=Function('a','b','console.log(a+b);');
func(2,3);

二.不同的調(diào)用方式:

a.直接調(diào)用:

foo()

b.對(duì)象方法:

o.method()

c.構(gòu)造器:

new Foo()

d.call/apply/bind:

func.call(o)

三、this:

a.全局的this(瀏覽器):

console.log(this); //window
console.log(this.document===document); //true

this.a=2;
console.log(window.a); //37

b.一般函數(shù)的this(瀏覽器):

function f1(){
   return this;
}
f1()===windonw; //true

嚴(yán)格模式下,f1()===undefined
c.作為對(duì)象方法的函數(shù)的this:

var o={
    prop:37,
    f:function(){
        return this.prop;
    }
}
console.log(o.f); //37

var o={prop:37};
function independent(){
    return this.prop
}
o.f=independent;
console.log(o.f()); //37

c.對(duì)象原型鏈上的this:

var o={
    f:function(){
        return this.a+this.b;
    }
};
var p=Object.create(o);
p.a=1;
p.b=4;
console.log(p.f()); //  5

d.構(gòu)造器中的this:

function MyClass(){
   this.a=37;
}
var o=new MyClass();
console.log(o.a);  //37

function C2(){
   this.a=37;
   return{a:38};
}
o=new C2();
console.log(o.a); //38

在構(gòu)造器中,沒(méi)有return語(yǔ)句時(shí),就返回該this,否則返回return的對(duì)象

e.call/apply方法與this

function add(c,d){
    return this.a+this.b+c+d;
}

var o={a:1,b:3};
add.call(o,5,7);  //1+3+5+7=16
add.apply(o,[10,20]);  //1+3+10+20=34

f.bind方法與this

function f(){
    return this.a;
}
var g=f.bind({a:'test'});
document.write(g());  //test

四、函數(shù)屬性&arguments:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門(mén)語(yǔ)言來(lái)說(shuō)都是核心的概念。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句,而且...
    道無(wú)虛閱讀 4,932評(píng)論 0 5
  • 函數(shù)是一塊JavaScript代碼,被定義一次,但可執(zhí)行調(diào)用多次,js中的函數(shù)也是對(duì)象,所以js函數(shù)可以像其他對(duì)象...
    深沉的簡(jiǎn)單閱讀 494評(píng)論 0 4
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會(huì)包括一個(gè)稱(chēng)為形參的標(biāo)識(shí)符列表,這些參數(shù)在...
    PySong閱讀 368評(píng)論 0 0
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會(huì)包括一個(gè)稱(chēng)為形參的標(biāo)識(shí)符列表,這些參數(shù)在...
    PySong閱讀 909評(píng)論 0 0
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會(huì)包括一個(gè)稱(chēng)為形參的標(biāo)識(shí)符列表,這些參數(shù)在...
    PySong閱讀 667評(píng)論 0 0

友情鏈接更多精彩內(nèi)容