成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

函數(shù)基本概念

Lycheeee / 3144人閱讀

摘要:返回相加的和永遠也不會執(zhí)行函數(shù)參數(shù)聲明函數(shù)時沒有給參數(shù),但調(diào)用函數(shù)時會傳參。當網(wǎng)頁在全局作用域中調(diào)用函數(shù)時,這個對象引用的就是。

函數(shù)

通過函數(shù)可以封裝任意多條語句,可以在任何地方,任何時候調(diào)用執(zhí)行。每個函數(shù)都是function類型的實例,和其他引用類型一樣具有屬性和方法。
把函數(shù)保存為對象中的一個屬性時,該屬性稱之為方法。

函數(shù)聲明語法方式

普通聲明方式

function sum (){
        return num1 + num2;
}

使用變量初始化函數(shù)

var sum = function(num1,num2){
        return num1 + num2;
}

使用function構(gòu)造函數(shù),這種方法不推薦。這種方法便于理解“函數(shù)是對象,函數(shù)名是指針”的概念。

var sum = new Function("num1","num2","return num1 + num2");

delete可刪除屬性,用法delete.a.name

作為值的函數(shù)

任何函數(shù)在任何時候都可以通過return語句來返回值。需要注意的是位于return語句之后的一句語句永遠不會執(zhí)行。
調(diào)用函數(shù)(方法)如果沒有圓括號,會打印函數(shù)代碼,有括號才會打印函數(shù)值。

function sum(num1,num2){
    return num1 + num2;        //返回 num1 + num2 相加的和
    alert("Hello world!");    //永遠也不會執(zhí)行
} 
函數(shù)參數(shù)

聲明函數(shù)時沒有給參數(shù),但調(diào)用函數(shù)時會傳參。
函數(shù)內(nèi)部可用argument方法獲取,配合length使用可動態(tài)傳參。

function sum(){
    if(arguments.length == 1){
        alret(arguments[0] + 10);
    }else if(arguments.length == 2){
        alert(arguments[0] + arguments[1] + 10);
    }
}

sum(10)        //打印20
sum(10,20)    //打印40
JavaScript 函數(shù)沒有重載

重載是根據(jù)參數(shù),選擇相同函數(shù)名而參數(shù)不同的函數(shù)。

階乘函數(shù)
function factorial(){
    if(num < 1){
        return 1;
    }else{
        return num * arguments.callee(num -1);//arguments.callee調(diào)用自身函數(shù)。這里調(diào)用的是factorial函數(shù)。
    }
}
this

this引用的是函數(shù)執(zhí)行的環(huán)境對象,也就是函數(shù)調(diào)用語句所處的那個作用域。當網(wǎng)頁在全局作用域中調(diào)用函數(shù)時,這個this對象引用的就是window。window是一個對象,而且是JS里最大的對象,是最外圍的對象。

var color = "red";        //這里color是全局變量,而這變量又是window的屬性
alert{window.color};    //打印"red",這說明color是window下的屬性
alert(this.color);        //同上
window.color = "red";    //相當于 var color = "red"
alert(this.color);        //打印"red"

var o ={
    color: "blue";        //這里的color是o下的屬性,也就是局部變量
    sayColor: function(){
        alert(this.color);    //這里的this代表的是o對象
    }
};

o.sayColor();            //打印"blue"

下面的代碼其實和上面是一樣的,只是將sayColor()函數(shù)作為方法賦值給o,然后在通過o來調(diào)用它

window.color = "red";        //全局        
var o = {color: "blue"};    //局部

function sayColor(){        
    alert(this.color);        //這里執(zhí)行的時候是動態(tài)的,第一次指向window,第二次指向sayColor
}

sayColor();                    //打印"red",因為這里是在window下的
o.sayColor = sayColor;        //這里是吧把sayColor作為方法賦值給o,這樣的話this就指代o了
o.sayColor();                //這里執(zhí)行的是box里面的this.color,也就是說這里this指向了box
prototype

prototype是保存他們所有實例方的真正所在,toStringvalueOf等方法都是保存在peototype名下,只不過是通過各自對象的實例訪問。
每個函數(shù)都包含兩個非繼承而來的方法:apply()call()這兩個方法的用途都是在特定的作用域中調(diào)用函數(shù),實際上等于設置函數(shù)體內(nèi)this對象的值。
apple()接收兩個參數(shù),一個是其中運行函數(shù)的作用域,另一個是參數(shù)數(shù)組。
call()apple()方法一樣,區(qū)別是call()方法傳遞給函數(shù)的參數(shù)必須逐個傳。

function sum(num1,num2){
    return num1 + num2;
}

function sum1(nu1,num2){
    return sum.apply(this,arguments);    //arguments可以當數(shù)值傳,等于下面的[num1,num2];this表示window作用域
}

function sum2(nu1,numw){
    return sum.apply(this,[num1,num2]);    //apply可以冒充另一個函數(shù),這里冒充了sum;[]表示傳遞的參數(shù) 
}

alert(sum1(10,10));        //打印20
alert(sum2(10,10));        //打印20

這兩方法最大的用處是:擴充函數(shù)運行的作用域。

window.color = "red";        //全局        
var o = {color: "blue"};    //局部

function sayColor(){        
    alert(this.color);        //這里this是動態(tài)的
}

sayColor();                    //打印"red"

//用call實現(xiàn)對象冒充
sayColor.call(this);        //冒充window
sayColor.call(window);        //冒充window
sayColor.call(o);            //冒充sayColor,用call的好處:對象不需要與方法發(fā)生任何耦合關(guān)系(耦合:互相關(guān)聯(lián)的意思,擴展和維護會發(fā)生連鎖反應)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94457.html

相關(guān)文章

  • 熬夜爆肝!C++核心STL容器知識點匯總整理【3W字干貨預警 建議收藏】

    摘要:拷貝構(gòu)造函數(shù)示例構(gòu)造無參構(gòu)造函數(shù)總結(jié)容器和容器的構(gòu)造方式幾乎一致,靈活使用即可賦值操作功能描述給容器進行賦值函數(shù)原型重載等號操作符將區(qū)間中的數(shù)據(jù)拷貝賦值給本身。清空容器的所有數(shù)據(jù)刪除區(qū)間的數(shù)據(jù),返回下一個數(shù)據(jù)的位置。 ...

    wayneli 評論0 收藏0
  • js的基本概念

    JavaScript 中的數(shù)據(jù)類型 JavaScript 有 5 種簡單數(shù)據(jù)類型:Undefined、Null、Boolean、Number、String 和 1 種復雜數(shù)據(jù)類型 Object 。 基本類型(值類型) Undefined Null Boolean Number String 復雜類型(引用類型) Object Array Date RegExp Function 基本包裝類...

    sherlock221 評論0 收藏0
  • 復習Javascript專題(一):基本概念部分

    摘要:一數(shù)據(jù)類型基本類型引用類型類型判斷返回結(jié)果未定義布爾值字符串數(shù)值對象或者函數(shù)拓展堆棧兩種數(shù)據(jù)結(jié)構(gòu)堆隊列優(yōu)先,先進先出由操作系統(tǒng)自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。 一、數(shù)據(jù)類型 基本類型:`Null Boolean String Undefined Number(NB SUN)` 引用類型:`Array Function Object` 類型判斷:typeof 返回結(jié)果...

    LiangJ 評論0 收藏0
  • Array基本概念

    摘要:基本概念可以使用關(guān)鍵字創(chuàng)建。調(diào)用時傳入一個數(shù)組和一個函數(shù),內(nèi)部過程遍歷數(shù)組,并對數(shù)組中的每一項調(diào)用函數(shù),調(diào)用函數(shù)的時候會傳入兩個參數(shù),這個數(shù)組有項,傳次,每次不一樣的不一樣的。會按照升序排列數(shù)組。 Array基本概念 Array可以使用new關(guān)鍵字創(chuàng)建 。var a = new Array(1,2,3,4); === var a = Array(1,2,3,4); === var a...

    Alfred 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<