干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十年專注于品牌網(wǎng)站建設 十年專注于品牌網(wǎng)站建設,低調、高逼格、有情懷的網(wǎng)絡應用服務商!
南昌百恒網(wǎng)絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網(wǎng)絡微信公眾號
掃一掃打開百恒網(wǎng)絡微信小程序

百恒網(wǎng)絡

結合實例初步介紹ECMAScript 函數(shù)中的參數(shù)概念及意義

百恒網(wǎng)絡 2012/2/29 3106

理解參數(shù)
    ECMAScript函數(shù)的參數(shù)與大多數(shù)其他語言中函數(shù)的參數(shù)有所不同。ECMAScript函數(shù)不介意傳遞進來多少個參數(shù),也不在乎傳進來參數(shù)是什么數(shù)據(jù)類型。也就是說,即便你定義的函數(shù)只接收兩個參數(shù),在調用這個函數(shù)時也未必一定要傳遞兩個參數(shù)。可以傳遞一個、三個甚至不傳遞參數(shù),而觶析器永遠不會有什么怨言。之所以會這樣,原因是ECMAScript中的參數(shù)在內部是用一個數(shù)組來表示的。函數(shù)接收到的始終都是這個數(shù)組,而不關心數(shù)組中包含哪些參數(shù)(如果有參數(shù)的話)。如果這個數(shù)組中不包含任何元素,無所謂;如果包含多個元素,也沒有問題。實際上,在函數(shù)體內可以通過arguments對象來訪問這個參數(shù)數(shù)組,從而獲取傳遞給函數(shù)的每一個參數(shù)。
    其實,arguments對象只是與數(shù)組類似(它并不是Array的實例),因為可以使用方括號語法訪問它的每一個元素(即第一個元素是arguments[o],第二個元素是argumetns [1],以此類推),使用length屬性來確定傳遞進來多少個參數(shù)。在前面的例子中,sayHi()函數(shù)的第一個參數(shù)的名字叫name,而該參數(shù)的值也可以通過訪問arguments[o]來獲取。因此,南昌網(wǎng)站建設公司工程師提示,那個函數(shù)也可以像下面這樣重寫,即不顯式地使用命名參數(shù):
        function sayHi() {
        alert( "Hello"+arguments[0]+","+arguments[1]);}
        sayHi( "Nicholas”,"how are you today?");
    這個重寫后的函數(shù)中不包含命名的參數(shù)。雖然沒有使用name和message標識符,但函數(shù)的功能依舊。這個事實說明了ECMAScript函數(shù)的一個重要特點:命名的參數(shù)只提供便利,但不是必需的。另外,在命名參數(shù)方面,其他語言可能需要事先創(chuàng)建一個函數(shù)簽名,而將來的調用必須與該簽名一致。但在ECMAScript中,沒有這些條條框框,解析器不會驗證命名參數(shù)。
通過訪問arguments對象的length屬性可以獲知有多少個參數(shù)傳遞給了函數(shù)。下面這個函數(shù)會在每次被調用時,輸出傳入其中的參數(shù)個數(shù):
        function howManyArgs() {
        alert (arguments.length);
        }
        howManyArgs(”string”,45); //2
        howManyArgs(); //0
        howManyArgs {12); //1
執(zhí)行以上代碼會依次出現(xiàn)3個警告框,分別顯示2、0和l。由此可見,南昌建網(wǎng)站公司工程師提示,開發(fā)人員可以利用這一點讓函數(shù)能夠接收任意個參數(shù)并分別實現(xiàn)適當?shù)墓δ堋U埧聪旅娴睦樱?br />         function doAdd() {
        if (arguments.length==1) {
        alert (arguments[0]+10);
        ) else if(arguments.length==2) {
        alert( arguments[O] +arguments [1]);
        }
        }
        doAdd (10); //20
        doAdd(30,20); //50
    函數(shù)doAdd()會在只有一個參數(shù)的情況下給該參數(shù)加上10;如果是兩個參數(shù),則將那個參數(shù)簡單相加并返回結果。因此,南昌網(wǎng)站制作公司工程師提示,doAdd(10)會返回20,而doAdd(30,20)則返回50。雖然這個特性算不上完美的重載,但也足夠彌補ECMAScript的這一缺憾了。
另一個與參數(shù)相關的重要方面,就是arguments對象可以與命名參數(shù)一起使用,如下面的例子所示:
        function doAdd(numl, num2){
        if(arguments.length ==1){
        alert(numl+10);
        }else if (arguments.length == 2)
        alert(arguments[o]+num2);
        }}
        doAdd (10); //20
        doAdd(30,20); //50
    在此,南昌做網(wǎng)站公司工程師經驗總結,在重寫后的這個doAdd()函數(shù)中,兩個命名參數(shù)都與arguments對象一起使用。由于numl的值與arguments[o]的值相同,因此它們可以互換使用(當然,num2和arguments [1J也是如此)。 關于參數(shù)還要記住最后一點:沒有傳遞值的命名參數(shù)將自動被賦予undefined值。這就跟定義了變量但又沒有初始化一樣。例如,如果只給doAdd()函數(shù)傳遞了一個參數(shù),則num2中就會保存 undefined值。
ECMAScript中的所有參數(shù)傳遞的都是值,不可能通過引用傳遞參數(shù)。


    希望本文對廣大站長或從事企業(yè)網(wǎng)站建設公司的團隊有所幫助,如對此不太理解的,可以與南昌網(wǎng)絡公司百恒網(wǎng)絡技術部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網(wǎng)站建設公司技術人員分享我們的技術和經驗。
南昌網(wǎng)站建設--百恒網(wǎng)絡,專業(yè)專注于南昌網(wǎng)站設計|南昌網(wǎng)站推廣,為用戶提供高品質的網(wǎng)絡產品和優(yōu)質的服務是我們始終追求的目標!
 

400-680-9298,0791-88117053
掃一掃關注百恒網(wǎng)絡微信公眾號
掃一掃打開百恒網(wǎng)絡小程序

歡迎您的光顧,我們將竭誠為您服務×

百色市| 富蕴县| 潞西市| 财经| 黑河市| 开封市| 客服| 华阴市| 通城县| 高阳县| 荆州市| 荣昌县| 平远县| 安福县| 东丽区| 札达县| 应城市| 周至县| 金华市| 南郑县| 托克托县| 宜黄县| 洛隆县| 靖安县| 饶河县| 丽江市| 周至县| 松滋市| 奉新县| 丽水市| 望奎县| 朝阳区| 苍梧县| 蕉岭县| 太湖县| 昂仁县| 临洮县| 海安县| 蓬安县| 宝应县| 彭山县|