您好,登錄后才能下訂單哦!
今天小編給大家分享一下JavaScript ES6的函數(shù)怎么用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
之前的寫(xiě)法:
function count(x, y) { return x + y; } count(3);//因?yàn)橹粋鬟f了參數(shù)x,y的默認(rèn)值為undefined //undefined + 3返回NaN function count(x, y) { x = x || 0; y = y || 0; return x + y; } count(3);//3 function count(x, y) { x = x??0; y = y??0; return x + y; } count(3);//3
ES6寫(xiě)法:
ES6的寫(xiě)法簡(jiǎn)潔易讀,能夠讓其他開(kāi)發(fā)者快速了解參數(shù)類型,是否可省等信息,也不會(huì)對(duì)函數(shù)體代碼造成過(guò)多負(fù)擔(dān),有利于后期優(yōu)化重構(gòu)
function count(x = 0, y = 0) { return x + y; } count(3);
注意事項(xiàng):
1.使用默認(rèn)參數(shù),在函數(shù)體內(nèi)不能重新命名同名變量
function count(x = 0, y = 0) { let x;//報(bào)錯(cuò) const y;//報(bào)錯(cuò) }
參數(shù)默認(rèn)值不是傳值的,而是每次都重新計(jì)算默認(rèn)表達(dá)式的值,也就是說(shuō)參數(shù)默認(rèn)值是惰性求值的
let num = 1; function count(x = num + 1, y = 0) { return x; } count();//2 num = 99; count();//100
參數(shù)也可以作為默認(rèn)值,但是要注意順序
正確示例:
function fn(x = 10, y = x) { console.log(x, y); } fn(20);//20 20 fn();//10 10
錯(cuò)誤示例:
function fn(x = y, y = 10) { console.log(x, y); } fn();//報(bào)錯(cuò)
參數(shù)默認(rèn)值為變量時(shí),如果外部作用域有對(duì)應(yīng)變量,那么這個(gè)參數(shù)就會(huì)指向外部變量(即參數(shù)的值等于外部變量的值)
let w = 10; function fn(x = w) { let w = 20; return x; } fn();//10
注意:
//在()階段,x已經(jīng)賦值后,再改變w的值,也無(wú)法改變x的值 let w = 10; function fn(x = 2) { w = 20; return x; } fn();//10
ES6引入reset
參數(shù)(形式為…變量名),用于獲取函數(shù)的多余參數(shù),這樣就不需要使用arguments對(duì)象了
reset參數(shù)搭配的變量是一個(gè)數(shù)組,該變量將多余的參數(shù)放入數(shù)組中
類似解構(gòu)賦值,以后就不用call來(lái)使arguments
調(diào)用數(shù)組方法了
function count(...values) { console.log(values);//[2, 5, 3] return values.reduce((acc,curr) => acc + curr); } add(2, 5, 3);//10
reset參數(shù)必須作為函數(shù)最后一個(gè)參數(shù)
function count(...value, a){}//報(bào)錯(cuò)
函數(shù)的name
屬性,返回該函數(shù)的函數(shù)名
function count(){} console.log(count.name); //"count" (new Function).name // "anonymous" function foo() {}; foo.bind({}).name // "bound foo" function foo() {}; foo.bind({}).name // "bound foo" (function(){}).bind({}).name // "bound " // "bound " (function(){}).name // ""
ES6中規(guī)定可以使用“箭頭”(=>)定義函數(shù)
------------正常函數(shù)------------- function count(x, y) { return x + y; } ------------箭頭函數(shù)------------- let count =(x, y) => x + y;
函數(shù)體中可以直接書(shū)寫(xiě)表達(dá)式
let count = (x, y) => { y = 100; x = x * y; return x + y; } count(3, 4);//400
()中書(shū)寫(xiě)表達(dá)式,書(shū)寫(xiě)多個(gè)短語(yǔ)語(yǔ)句,最后一個(gè)“,”之后的值為返回值
let count = (x, y) => (x = 100, y = 10, x + y); count(3, 4);//110
{}中書(shū)寫(xiě)多行語(yǔ)句
//報(bào)錯(cuò) 會(huì)將{}識(shí)別為函數(shù)體 let count = id => {id: id, name: "yunjin"}; //不會(huì)報(bào)錯(cuò) let count = id => ({id: id, name: "yunjin"});
以上就是“JavaScript ES6的函數(shù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。