JS 函數(shù)

1.函數(shù)實(shí)際上是對(duì)象
2.函數(shù)的定義:

1.函數(shù)申明語法定義:

function sun {
   /*......*/
}

2.函數(shù)表達(dá)式定義:

var sun = function() {
   /*......*/
};//函數(shù)末尾有分號(hào),就像定義變量一樣
3.函數(shù)對(duì)象的length屬性是其聲明的參數(shù)的個(gè)數(shù)
舉個(gè)例子:
function  a(b,c){
     /*.....*/
}
a.length; //2
4.函數(shù)沒有重載,函數(shù)提升

如果同時(shí)聲明兩個(gè)名字一樣的函數(shù),后一個(gè)會(huì)覆蓋前一個(gè)函數(shù)

function sum(){
    console.log(10)

};
sum();
function sum (){
    console.log(20)
}
sum();
image.png

以上結(jié)果證實(shí),函數(shù)無法重載,后一個(gè)會(huì)覆蓋前一個(gè);
可能會(huì)有人產(chǎn)生疑惑??,為什么第一sum()執(zhí)行結(jié)果也是20,那是因?yàn)镴S中的解析器會(huì)率先讀取函數(shù)聲明(也可以理解為函數(shù)聲明提升)的過程;但是,函數(shù)表達(dá)式就沒有這個(gè)待遇,它無法被JS引擎提升到頂部;

舉另一個(gè)例子(用函數(shù)表達(dá)式定義函數(shù)):
var sum = function(){
    console.log(10)

};
sum();
var sum = function (){
    console.log(20)
}
sum();

結(jié)果如下:


image.png

這時(shí)兩個(gè)sum()調(diào)用后,就呈現(xiàn)出不同的結(jié)果了。

5.根據(jù)屬性名來創(chuàng)建一個(gè)比較函數(shù)

舉個(gè)例子:

function createComparisonFunction(propertyName){
    return function(object1,object2){
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if(value1<value2){
            return -1;
        }else if (value1 > value2){
            return 1;
        }else{
            return 0;
        }
    };
}

var data =  [{name:"zzzzz",age:"11"},{name:"wef",age:"18"},{name:"wef",age:"10"}];
data.sort(createComparisonFunction("age"));
alert(data[0].age);

結(jié)果如下:


e
6.函數(shù)內(nèi)部屬性

在函數(shù)內(nèi)部,有兩個(gè)特殊的對(duì)象,arguments 和 this。

arguments:

其中arguments又一個(gè)叫callee的屬性,該屬性是一個(gè)指針,指向擁有這個(gè)arguments對(duì)象的函數(shù);

舉個(gè)例子:

一般的階乘函數(shù)(在函數(shù)體內(nèi)調(diào)用函數(shù)本身):

function factorial (num){
    if(num <= 1){
        return 1;
    }else{
        return num * factorial(num-1);
    }
}
console.log(factorial(3)); //6

利用 arguments.callee 的階乘例子:

function factorial (num){
    if(num <= 1){
        return 1;
    }else{
        return num * arguments.callee(num-1);
    }
}
console.log(factorial(3));//6
this:

this 引用的是函數(shù)執(zhí)行的環(huán)境對(duì)象(當(dāng)在網(wǎng)頁的全局作用域中調(diào)用函數(shù)時(shí),this對(duì)象引用的就是windows)

一個(gè)例子:
window.color = "red";
var o = {color : "blue"};
function sayColor(){
    alert(this.color);
}
sayColor();//red
o.sayColor = sayColor;
o.sayColor(); //blue

以上例子中,sayColor()是在全局作用域中定義的,它引用了this對(duì)象,所以this指向的是全局對(duì)象;換句話說“this.color”會(huì)被轉(zhuǎn)換為"window.color";返回結(jié)果“red”; 而把這個(gè)函數(shù)賦值給對(duì)象o時(shí),并調(diào)用o.sayColor() ,這里的this,color會(huì)轉(zhuǎn)換成o.color;返回結(jié)果“blue” ;

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 函數(shù)是一段可以反復(fù)調(diào)用的代碼塊。函數(shù)還能接受輸入的參數(shù),不同的參數(shù)會(huì)返回不同的值。 概述 函數(shù)的聲明 JavaSc...
    oWSQo閱讀 1,472評(píng)論 0 4
  • 在js中,函數(shù)本身屬于對(duì)象的一種,因此可以定義、賦值,作為對(duì)象的屬性或者成為其他函數(shù)的參數(shù)。函數(shù)名只是函數(shù)這個(gè)對(duì)象...
    bjhu電net閱讀 609評(píng)論 0 5
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*) 函數(shù)在JS中有三種方式來定義:函數(shù)聲明(function decla...
    進(jìn)擊的阿群閱讀 483評(píng)論 0 1
  • 昨晚,一場(chǎng)球賽的進(jìn)程牽動(dòng)了億萬國人,在無數(shù)人期待的目光下,經(jīng)過近100分鐘的激烈較量,中國男足1:0力克韓國,舉國...
    落水有聲閱讀 474評(píng)論 8 8
  • 并不記得是第幾個(gè)深夜,艾米左手叼著煙,在院子里,靜靜的吐著煙圈,看著煙圈慢慢變大,變薄,然后消失在夜里。 夜,帶走...
    有馬甲線的美女作家閱讀 556評(píng)論 0 0

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