成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

函數(shù)基本概念

Lycheeee / 3310人閱讀

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

函數(shù)

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

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

普通聲明方式

function sum (){
        return num1 + num2;
}

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

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

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

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

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

作為值的函數(shù)

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

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

聲明函數(shù)時(shí)沒有給參數(shù),但調(diào)用函數(shù)時(shí)會(huì)傳參。
函數(shù)內(nèi)部可用argument方法獲取,配合length使用可動(dòng)態(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)境對(duì)象,也就是函數(shù)調(diào)用語句所處的那個(gè)作用域。當(dāng)網(wǎng)頁在全局作用域中調(diào)用函數(shù)時(shí),這個(gè)this對(duì)象引用的就是window。window是一個(gè)對(duì)象,而且是JS里最大的對(duì)象,是最外圍的對(duì)象。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sayColor();                    //打印"red"

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/94457.html

相關(guān)文章

  • 熬夜爆肝!C++核心STL容器知識(shí)點(diǎn)匯總整理【3W字干貨預(yù)警 建議收藏】

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

    wayneli 評(píng)論0 收藏0
  • js的基本概念

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

    sherlock221 評(píng)論0 收藏0
  • 復(fù)習(xí)Javascript專題(一):基本概念部分

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

    LiangJ 評(píng)論0 收藏0
  • Array基本概念

    摘要:基本概念可以使用關(guān)鍵字創(chuàng)建。調(diào)用時(shí)傳入一個(gè)數(shù)組和一個(gè)函數(shù),內(nèi)部過程遍歷數(shù)組,并對(duì)數(shù)組中的每一項(xiàng)調(diào)用函數(shù),調(diào)用函數(shù)的時(shí)候會(huì)傳入兩個(gè)參數(shù),這個(gè)數(shù)組有項(xiàng),傳次,每次不一樣的不一樣的。會(huì)按照升序排列數(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 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<