亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

js 函數(shù)參數(shù)推薦書(shū)寫(xiě)方式 ({ param1, param2, ... })

masturbator / 3174人閱讀

摘要:函數(shù)參數(shù)推薦書(shū)寫(xiě)方式編程語(yǔ)言函數(shù)包括對(duì)象的方法參數(shù)的取值方式大致可以分為兩種按序取值與按名取值。按名取值按照名稱(chēng)取值,可以任意安排各個(gè)參數(shù)的順序。

js 函數(shù)參數(shù)推薦書(shū)寫(xiě)方式 ({ param1, param2, ... })

編程語(yǔ)言函數(shù)(包括對(duì)象的方法)參數(shù)的取值方式大致可以分為兩種:按序取值與按名取值。

一般編程語(yǔ)言都是按序取值,比如 C、Java、JavaScript 等,少數(shù)語(yǔ)言支持按名取值,比如 Groovy。

1. 按序取值

按照順序,挨個(gè)取值,每個(gè)參數(shù)的順序是固定的。

const func = (param1, param2, ...) => { ... }

func(1, 2, ...)
2. 按名取值

按照名稱(chēng)取值,可以任意安排各個(gè)參數(shù)的順序。

以下語(yǔ)法并不存在,只是作為講解生造的
const func = (param1: value1, param2: value2, ...) => { ... }

func(param1: 1, param2: 2); // ok 
func(param2: 2, param1: 1); // ok again 
3. js 的按名取值

JavaScript 語(yǔ)言本身并不支持按名取值,但結(jié)合 ES6 的解構(gòu)賦值,可以模擬函數(shù)參數(shù)的按名取值。

const func = ({ param1, param2, ... }) => { ... }

func({ param1: 1, param2: 2, ... });

但這種方式如果不傳參數(shù)調(diào)用 func() 就會(huì)報(bào)錯(cuò),需要 func({}) 這樣調(diào)用才表示什么參數(shù)都不傳。

為了兼容這種方式,可以這樣做:

const func = ({ param1, param2, ... } = {}) => { ... }

func();   // ok
func({}); // ok again
4. 為什么推薦使用按名取值的方式

按名取值最大的好處是可以隨意安排參數(shù)的順序,有利于擴(kuò)展,特別是對(duì) API 接口來(lái)說(shuō)。

比如:

export const dialog = (title, content, confirmCallback, cancelCallback) => { ... }

比如上面的函數(shù)中,大部分情況下我只用 content, confirmCallback,那么我就需要這樣做:

dialog(null, "content", () => { ... });

如果我需要擴(kuò)展一個(gè)參數(shù) icon, 那么為了兼容以前的版本,我只能加在最后面:

export const dialog = (title, content, confirmCallback, cancelCallback, icon) => { ... }

現(xiàn)在,大部分情況下我只用 content, confirmCallback, icon,那么我就需要這樣做:

dialog(null, "content", () => { ... }, null, "icon");

如此,便很麻煩,不利于擴(kuò)展。

如果使用按名取值的方式,便迎刃而解:

export const dialog = ({title, content, confirmCallback, cancelCallback} = {}) => { ... }

// 擴(kuò)展 icon
export const dialog = ({title, content, icon, confirmCallback, cancelCallback} = {}) => { ... }
dialog({content: "content", confirmCallback: () => { ... }});

dialog({content: "content", icon: "icon", confirmCallback: () => { ... }});
5. 大家可能的反駁

有人可能會(huì)說(shuō),可以這樣做:

export const dialog = (title, content, confirmCallback, cancelCallback) => { 
  if (typeof content === "function") {
    cancelCallback = confirmCallback;
    confirmCallback = content;
    content = title;
  }
  
  ...
}

對(duì)于這種方式,我只想說(shuō):兄弟,簡(jiǎn)潔一點(diǎn)不好嗎?

后續(xù)

更多博客,查看 https://github.com/senntyou/blogs

作者:深予之 (@senntyou)

版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104485.html

相關(guān)文章

  • [譯] ES6 中 Arguments 和 Parameters 用法解析

    摘要:默認(rèn)參數(shù)有了我們不需要再去檢測(cè)哪些值為并且給它們?cè)O(shè)定默認(rèn)值了。我們甚至可以使用函數(shù)去找回默認(rèn)參數(shù)的值注意這個(gè)函數(shù)只有在第二個(gè)參數(shù)省略時(shí)才會(huì)被調(diào)用。瀏覽器對(duì)默認(rèn)參數(shù)的支持情況桌面瀏覽器移動(dòng)端瀏覽器解構(gòu)賦值解構(gòu)賦值是的新特性。 原文地址:https://www.smashingmagazine.com/2016/07/how-to-use-arguments-and-parameters...

    msup 評(píng)論0 收藏0
  • Js apply()使用詳解

    摘要:方法詳解我在一開(kāi)始看到的函數(shù)和時(shí)非常的模糊看也看不懂最近在網(wǎng)上看到一些文章對(duì)方法和的一些示例總算是看的有點(diǎn)眉目了在這里我做如下筆記希望和大家分享如有什么不對(duì)的或者說(shuō)法不明確的地方希望讀者多多提一些意見(jiàn)以便共同提高主要我是要解決一下幾個(gè)問(wèn)題和 Js apply方法詳解我在一開(kāi)始看到j(luò)avascript的函數(shù)apply和call時(shí),非常的模糊,看也看不懂,最近在網(wǎng)上看到一些文章對(duì)apply...

    iOS122 評(píng)論0 收藏0
  • Laravel 獲取 Route Parameters (路由參數(shù)) 的 5 種方法

    摘要:獲取路由參數(shù)的方式有很多,并且有個(gè)小坑,匯總?cè)缦?。例如結(jié)果為結(jié)果為以上就是獲取路由參數(shù)的種方法。所有文章均已收錄至項(xiàng)目。 Laravel 獲取路由參數(shù)的方式有很多,并且有個(gè)小坑,匯總?cè)缦隆?假設(shè)我們?cè)O(shè)置了一個(gè)路由參數(shù): /** * 定義路由參數(shù)名稱(chēng)分別為: param1,param2 */ Route::get(/{param1}/{param2}, TestController@in...

    seasonley 評(píng)論0 收藏0
  • Javascript定時(shí)器那些事兒

    摘要:一什么是定時(shí)器提供了一些原生方法來(lái)實(shí)現(xiàn)延時(shí)去執(zhí)行某一段代碼,下面來(lái)簡(jiǎn)單介紹一下設(shè)置一個(gè)定時(shí)器,在定時(shí)器到期后執(zhí)行一次函數(shù)或代碼段定時(shí)器延遲后執(zhí)行的函數(shù)延遲后執(zhí)行的代碼字符串,不推薦使用原理類(lèi)似延遲的時(shí)間單位毫秒,默認(rèn)值為向延遲函數(shù)傳遞而外的 一、什么是定時(shí)器 JS提供了一些原生方法來(lái)實(shí)現(xiàn)延時(shí)去執(zhí)行某一段代碼,下面來(lái)簡(jiǎn)單介紹一下 setTimeout: 設(shè)置一個(gè)定時(shí)器,在定時(shí)器到期后執(zhí)行...

    Riddler 評(píng)論0 收藏0
  • js計(jì)數(shù)器方法setInterval()、clearInterval()、setTimeout()和

    摘要:方法描述周期性地調(diào)用一個(gè)函數(shù)或者執(zhí)行一段代碼。方法可取消由方法設(shè)置的。語(yǔ)法詳解是該延時(shí)操作的數(shù)字此隨后可以用來(lái)作為方法的參數(shù)。需要注意的是,不支持第一種語(yǔ)法中向延遲函數(shù)傳遞額外參數(shù)的功能。該值標(biāo)識(shí)要取消的延遲執(zhí)行代碼塊。 方法 描述 setInterval 周期性地調(diào)用一個(gè)函數(shù)(function)或者執(zhí)行一段代碼。 clearInterval 取消掉用setI...

    keithxiaoy 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<