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

ES6新特性之函數(shù)的擴(kuò)展實(shí)例詳解

 更新時(shí)間:2017年04月01日 11:55:22   作者:我的老婆是?;? 
這篇文章主要介紹了ES6新特性之函數(shù)的擴(kuò)展,實(shí)例形式較為詳細(xì)的分析了ES6針對(duì)函數(shù)參數(shù)、運(yùn)算符及相關(guān)新特性的擴(kuò)展操作與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了ES6新特性之函數(shù)的擴(kuò)展。分享給大家供大家參考,具體如下:

一、函數(shù)參數(shù)默認(rèn)值

1. ES6允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值,即直接寫在參數(shù)定義的后面。

function log(x, y = 'World') {
  console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

這種寫法有兩個(gè)好處:首先,閱讀代碼的人,可以立刻意識(shí)到哪些參數(shù)是可以省略的,不用查看函數(shù)體或文檔;其次,有利于將來的代碼優(yōu)化,即使未來的版本在對(duì)外接口中,徹底拿掉這個(gè)參數(shù),也不會(huì)導(dǎo)致以前的代碼無法運(yùn)行。

參數(shù)變量是默認(rèn)聲明的,所以不能用let或const再次聲明。否則會(huì)報(bào)錯(cuò)。

2. 參數(shù)默認(rèn)值可以與解構(gòu)賦值的默認(rèn)值,結(jié)合起來使用。

function foo({x, y = 5}) {
  console.log(x, y);
}
foo({}) // undefined, 5
foo({x: 1}) // 1, 5
foo({x: 1, y: 2}) // 1, 2
foo() // TypeError: Cannot read property 'x' of undefined

通常情況下,定義了默認(rèn)值的參數(shù),應(yīng)該是函數(shù)的尾參數(shù)。因?yàn)檫@樣比較容易看出來,到底省略了哪些參數(shù)。如果非尾部的參數(shù)設(shè)置默認(rèn)值,實(shí)際上這個(gè)參數(shù)是沒法省略的。

指定了默認(rèn)值以后,函數(shù)的length屬性,將返回沒有指定默認(rèn)值的參數(shù)個(gè)數(shù)。也就是說,指定了默認(rèn)值后,length屬性將失真。

(function (a) {}).length // 1
(function (a = 5) {}).length // 0
(function (a, b, c = 5) {}).length // 2

二、rest參數(shù)

ES6引入rest參數(shù)(形式為“...變量名”),用于獲取函數(shù)的多余參數(shù),這樣就不需要使用arguments對(duì)象了。rest參數(shù)搭配的變量是一個(gè)數(shù)組,該變量將多余的參數(shù)放入數(shù)組中。

function add(...values) {
  let sum = 0;
  for (var val of values) {
    sum += val;
  }
  return sum;
}
add(2, 5, 3) // 10

上面代碼的add函數(shù)是一個(gè)求和函數(shù),利用rest參數(shù),可以向該函數(shù)傳入任意數(shù)目的參數(shù)。

注意,rest參數(shù)之后不能再有其他參數(shù)(即只能是最后一個(gè)參數(shù)),否則會(huì)報(bào)錯(cuò)。

函數(shù)的length屬性,不包括rest參數(shù)。

三、擴(kuò)展運(yùn)算符

擴(kuò)展運(yùn)算符(spread)是三個(gè)點(diǎn)(...)。它好比rest參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列。

console.log(...[1, 2, 3])
// 1 2 3
console.log(1, ...[2, 3, 4], 5)
// 1 2 3 4 5
[...document.querySelectorAll('div')]
// [<div>, <div>, <div>]

四、箭頭函數(shù)

ES6允許使用“箭頭”(=>)定義函數(shù)。箭頭函數(shù)前面是輸入,后面是輸出。inputs => outputs

var f = v => v;
//上面的箭頭函數(shù)等同于:
var f = function(v) {
 return v;
};

如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分。

var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
 return num1 + num2;
};

如果箭頭函數(shù)的代碼塊部分多于一條語句,就要使用大括號(hào)將它們括起來,并且使用return語句返回。

var sum = (num1, num2) => { return num1 + num2; }
//由于大括號(hào)被解釋為代碼塊,所以如果箭頭函數(shù)直接返回一個(gè)對(duì)象,必須在對(duì)象外面加上括號(hào)。
var getTempItem = id => ({ id: id, name: "Temp" });

箭頭函數(shù)可以與變量解構(gòu)結(jié)合使用。

const full = ({ first, last }) => first + ' ' + last;
// 等同于
function full(person) {
 return person.first + ' ' + person.last;
}

箭頭函數(shù)的一個(gè)用處是簡化回調(diào)函數(shù)。

// 正常函數(shù)寫法
[1,2,3].map(function (x) {
 return x * x;
});
// 箭頭函數(shù)寫法
[1,2,3].map(x => x * x);

下面是rest參數(shù)與箭頭函數(shù)結(jié)合的例子。

const numbers = (...nums) => nums;
numbers(1, 2, 3, 4, 5)
// [1,2,3,4,5]

箭頭函數(shù)有幾個(gè)使用注意點(diǎn)。

(1)函數(shù)體內(nèi)的this對(duì)象,就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象。
(2)不可以當(dāng)作構(gòu)造函數(shù),也就是說,不可以使用new命令,否則會(huì)拋出一個(gè)錯(cuò)誤。
(3)不可以使用arguments對(duì)象,該對(duì)象在函數(shù)體內(nèi)不存在。如果要用,可以用Rest參數(shù)代替。
(4)不可以使用yield命令,因此箭頭函數(shù)不能用作Generator函數(shù)。

上面四點(diǎn)中,第一點(diǎn)尤其值得注意。this對(duì)象的指向是可變的,但是在箭頭函數(shù)中,它是固定的。

五、函數(shù)參數(shù)的尾逗號(hào)

ECMAScript 2017將函數(shù)的最后一個(gè)參數(shù)有尾逗號(hào)(trailing comma)。

此前,函數(shù)定義和調(diào)用時(shí),都不允許最后一個(gè)參數(shù)后面出現(xiàn)逗號(hào)。

function clownsEverywhere(
  param1,
  param2
) { /* ... */ }

上面代碼中,如果在param2或bar后面加一個(gè)逗號(hào),就會(huì)報(bào)錯(cuò)。

這樣的話,如果以后修改代碼,想為函數(shù)clownsEverywhere添加第三個(gè)參數(shù),就勢必要在第二個(gè)參數(shù)后面添加一個(gè)逗號(hào)。這對(duì)版本管理系統(tǒng)來說,就會(huì)顯示,添加逗號(hào)的那一行也發(fā)生了變動(dòng)。這看上去有點(diǎn)冗余,因此新的語法允許定義和調(diào)用時(shí),尾部直接有一個(gè)逗號(hào)。

function clownsEverywhere(
  param1,
  param2,
) { /* ... */ }

希望本文所述對(duì)大家ECMAScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Array.prototype 的泛型應(yīng)用分析

    Array.prototype 的泛型應(yīng)用分析

    Array.prototype 的泛型應(yīng)用分析,需要的朋友可以參考下。
    2010-04-04
  • uni-app小程序分享功能實(shí)現(xiàn)方法舉例

    uni-app小程序分享功能實(shí)現(xiàn)方法舉例

    這篇文章主要給大家介紹了關(guān)于uni-app小程序分享功能實(shí)現(xiàn)方法的相關(guān)資料,uni-app中有分享的API接口,但是需要現(xiàn)在QQ或者微信等開發(fā)者平臺(tái)上注冊賬號(hào),驗(yàn)證公司信息,而且只能分享圖片或者文本等內(nèi)容,需要的朋友可以參考下
    2023-07-07
  • javascript trim 去空格函數(shù)實(shí)現(xiàn)代碼

    javascript trim 去空格函數(shù)實(shí)現(xiàn)代碼

    去除字符串左右兩端的空格,在vbscript里面可以輕松地使用 trim、ltrim 或 rtrim,但在js中卻沒有這3個(gè)內(nèi)置方法,需要手工編寫。下面的實(shí)現(xiàn)方法是用到了正則表達(dá)式,效率不錯(cuò),并把這三個(gè)方法加入String對(duì)象的內(nèi)置方法中去。
    2008-10-10
  • 微信小程序?qū)崿F(xiàn)長按 識(shí)別圖片二維碼(兩種方案)

    微信小程序?qū)崿F(xiàn)長按 識(shí)別圖片二維碼(兩種方案)

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)長按 識(shí)別圖片二維碼(兩種方案),第一種方案只需要在image里面加一個(gè)屬性就可以了,本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • uniapp發(fā)送formdata表單請(qǐng)求2種方法(全網(wǎng)最簡單方法)

    uniapp發(fā)送formdata表單請(qǐng)求2種方法(全網(wǎng)最簡單方法)

    這篇文章主要給大家介紹了關(guān)于uniapp發(fā)送formdata表單請(qǐng)求2種方法的相關(guān)資料,本文介紹的方法應(yīng)該是全網(wǎng)最簡單方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • js實(shí)現(xiàn)textarea限制輸入字?jǐn)?shù)

    js實(shí)現(xiàn)textarea限制輸入字?jǐn)?shù)

    本文主要介紹了js實(shí)現(xiàn)textarea限制輸入字?jǐn)?shù)的原理與方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript實(shí)現(xiàn)圖片預(yù)加載的方法總結(jié)

    JavaScript實(shí)現(xiàn)圖片預(yù)加載的方法總結(jié)

    在Web前端開發(fā)中,圖片是網(wǎng)頁內(nèi)容的重要組成部分,但它們的加載時(shí)間往往會(huì)影響頁面的整體性能,為了提升用戶體驗(yàn),減少等待時(shí)間,開發(fā)者通常會(huì)采用圖片預(yù)加載(Image Preloading)技術(shù),本文給大家介紹了JavaScript實(shí)現(xiàn)圖片預(yù)加載的方法總結(jié),需要的朋友可以參考下
    2024-12-12
  • 圖片旋轉(zhuǎn)、鼠標(biāo)滾輪縮放、鏡像、切換圖片js代碼

    圖片旋轉(zhuǎn)、鼠標(biāo)滾輪縮放、鏡像、切換圖片js代碼

    這篇文章主要為大家介紹了圖片旋轉(zhuǎn)、鼠標(biāo)滾輪縮放、鏡像、切換圖片js代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 關(guān)于JS通過google翻譯插件實(shí)現(xiàn)多語言版本

    關(guān)于JS通過google翻譯插件實(shí)現(xiàn)多語言版本

    這篇文章主要介紹了JS通過google翻譯插件實(shí)現(xiàn)多語言版本,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 基于JS實(shí)現(xiàn)仿百度百家主頁的輪播圖效果

    基于JS實(shí)現(xiàn)仿百度百家主頁的輪播圖效果

    本文給大家分享基于html和js實(shí)現(xiàn)的仿百度百家主頁的輪播圖效果,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-03-03

最新評(píng)論

古蔺县| 达孜县| 金秀| 台中县| 湘潭市| 绥棱县| 合阳县| 莱州市| 贵定县| 祁东县| 隆回县| 福安市| 神农架林区| 沂源县| 滨海县| 景德镇市| 乐业县| 肥城市| 资中县| 云阳县| 全椒县| 姜堰市| 曲麻莱县| 金昌市| 新余市| 雷波县| 梅河口市| 海阳市| 玉树县| 施甸县| 全椒县| 乐亭县| 安丘市| 易门县| 莎车县| 海门市| 荥经县| 班戈县| 扬州市| 东乌珠穆沁旗| 平泉县|