最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript中的默認參數(shù)詳解

 更新時間:2014年10月22日 10:23:03   投稿:hebedich  
本文詳細介紹了javascript中的默認參數(shù)問題,非常的詳細,希望對大家能有所幫助

一些語言——像Ruby,CoffeeScript及即將到來的javascript版本——在定義一個函數(shù)的時候,可以聲明默認參數(shù),像下面這樣:

復(fù)制代碼 代碼如下:

function myFunc(param1, param2 = "second string") {
    console.log(param1, param2);
}

// Outputs: "first string" and "second string"
myFunc("first string");

// Outputs: "first string" and "second string version 2"
myFunc("first string", "second string version 2");

不幸的是,在當(dāng)前的javascript版本,這種寫法的無效的。因此,我們能做些什么來實現(xiàn)這種方式,使用我們現(xiàn)有的工具集?

最簡單的解決方式像這樣:

復(fù)制代碼 代碼如下:

function myFunc(param1, param2) {
    if (param2 === undefined) {
        param2 = "second string";
    }

    console.log(param1, param2);
}

// Outputs: "first string" and "second string version 2"
myFunc("first string", "second string version 2");

事實是一個被省略的參數(shù)在訪問時總是“undefined”。如果你只有一個參數(shù),這是一個好的解決方式,當(dāng)時如果有多個呢?

如果你多于一個參數(shù),你可以使用一個對象作為參數(shù),這樣有一個優(yōu)點是每個參數(shù)都有一個明確的命名。如果你傳遞一個對象參數(shù),你可以使用相同的方式聲明默認值。

復(fù)制代碼 代碼如下:

function myFunc(paramObject) {
    var defaultParams = {
        param1: "first string",
        param2: "second string",
        param3: "third string"
    };

    var finalParams = defaultParams;

    // We iterate over each property of the paramObject
    for (var key in paramObject) {
        // If the current property wasn't inherited, proceed
        if (paramObject.hasOwnProperty(key)) {
            // If the current property is defined,
            // add it to finalParams
            if (paramObject[key] !== undefined) {
                finalParams[key] = paramObject[key];
            }
        }
    }

    console.log(finalParams.param1,
                finalParams.param2,
                finalParams.param3);
}
myFunc({param1: "My own string"});

這是一個有點笨拙,如果你使用這種方式的地方很多,可以寫個封裝函數(shù),幸運的是,現(xiàn)在好多庫中帶了相關(guān)方法,比如jQuery和Underscore中的extend方法。

下面使用Underscore的extend方法來實現(xiàn)上面相同的結(jié)果:

復(fù)制代碼 代碼如下:

function myFunc(paramObject) {
    var defaultParams = {
        param1: "first string",
        param2: "second string",
        param3: "third string"
    };

    var finalParams = _.extend(defaultParams, paramObject);

    console.log(finalParams.param1,
                finalParams.param2,
                finalParams.param3);
}

// Outputs:
// "My own string" and "second string" and "third string"
myFunc({param1: "My own string"});

這就是你如何能得到默認參數(shù),在當(dāng)前的javascript版本中。

文中不妥之處歡迎批評指正。

相關(guān)文章

  • JavaScript 基本概念

    JavaScript 基本概念

    本文續(xù)上文,繼續(xù)講述javascript的基礎(chǔ),分為一下幾個部分:區(qū)分大小寫、標示符、注釋、語句、關(guān)鍵字和保留字,希望能給大家一些新的認識。
    2015-01-01
  • javascript prototype原型詳解(比較基礎(chǔ))

    javascript prototype原型詳解(比較基礎(chǔ))

    prototype原型是javascript中特別重要的概念,屬于必須要掌握,如果沒有良好的掌握的話,進一步用好或者學(xué)好js基本是不可能的實現(xiàn)的事情,并且此概念稍有難度,可能對于初次接觸的朋友來說有點困難,下面就通過代碼實例簡單介紹一下prototype原型的用法
    2016-12-12
  • JavaScript程序中實現(xiàn)繼承特性的方式總結(jié)

    JavaScript程序中實現(xiàn)繼承特性的方式總結(jié)

    JavaScript是一門強行聲稱面向?qū)ο蟮恼Z言,而繼承是面向?qū)ο蟮囊淮笾饕匦?這里我們根據(jù)阮一峰老師的文章來看一下JavaScript程序中實現(xiàn)繼承特性的方式總結(jié)
    2016-06-06
  • javascript作用域和作用域鏈詳解

    javascript作用域和作用域鏈詳解

    這篇文章主要為大家介紹了javascript作用域和作用域鏈,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • javascript indexOf函數(shù)使用說明

    javascript indexOf函數(shù)使用說明

    JavaScript中indexOf函數(shù)方法是返回 String 對象內(nèi)第一次出現(xiàn)子字符串的字符位置。
    2008-07-07
  • JavaScript 基礎(chǔ)問答 四

    JavaScript 基礎(chǔ)問答 四

    JavaScript 下拉菜單中的鏈接
    2008-12-12
  • JavaScript Math.ceil 方法(對數(shù)值向上取整)

    JavaScript Math.ceil 方法(對數(shù)值向上取整)

    js Math.ceil用于對數(shù)值向上取整,即得到大于或等于該數(shù)值的最小整數(shù),需要的朋友可以參考下
    2015-01-01
  • js函數(shù)調(diào)用常用方法詳解

    js函數(shù)調(diào)用常用方法詳解

    js的函數(shù)調(diào)用會免費奉送兩個而外的參數(shù)就是 this 和 arguments,我們所知道的應(yīng)該有4中調(diào)用方式吧,接下來將為您詳細介紹,感興趣的朋友可以參考下
    2012-12-12
  • 老生常談onBlur事件與onfocus事件(js)

    老生常談onBlur事件與onfocus事件(js)

    下面小編就為大家?guī)硪黄仙U刼nBlur事件與onfocus事件(js)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JavaScript 閉包詳細介紹

    JavaScript 閉包詳細介紹

    這篇文章主要介紹了JavaScript 閉包的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評論

阿勒泰市| 中方县| 济南市| 马关县| 莱州市| 普安县| 景泰县| 水城县| 藁城市| 阜康市| 辽宁省| 黔西县| 兴业县| 遂昌县| 游戏| 博湖县| 咸阳市| 罗江县| 巴彦淖尔市| 集贤县| 池州市| 韶关市| 筠连县| 长武县| 贡觉县| 西藏| 安康市| 天长市| 颍上县| 永新县| 蒙阴县| 诸暨市| 塘沽区| 石棉县| 巴林右旗| 湟中县| 思南县| 安溪县| 景谷| 自贡市| 广丰县|