這篇文章帶給大家的內容是關於es6函數的擴充介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
函數參數的預設值
我們都知道宣告函數可以設定形參,但你有沒有想過形參也可以直接設定預設值,我們接下來看看如何去寫
程式碼
function f(x,y=2) { return x+y } console.log(f(2)) // 4
上面的小範例只是設定了一個y的預設值2,然後我們使用這個函數的時候,只傳遞了x的參數2,所以我們會得到4,如果我們給y傳遞參數1呢?我們會得到什麼樣的結果,繼續看下面的例子
function f(x,y=2) { return x+y } console.log(f(2,1)) // 3
我們會得到3,因為你傳遞實參的話會替換預設值,更多的例子需要大家自己去實驗! ! !
function f(x,x,y=2) { return x+y } console.log(f(2,2, 1)) // 报错
上面的例子會報錯,因為我們不能設定相同的參數
let x = 3 function f(x,y=x) { return x+y } console.log(f(2)) var x = 3 function f(x,y=x) { return x+y } console.log(f(2)) function f(x,y=x) { console.log(x,y) // 2 2 var x = 3 console.log(x,y) // 3 2 return x+y } console.log(f(2)) // 5
上面三個例子是函數參數作用域的例子,我們來看第一個和第二個範例函數預設值會有一個自己單獨的作用域,所以我們在外面宣告修改的x是不會起作用的,但是第三個例子我們在函數內部修改x,我們可以看看我們印出的值可以看的未宣告之前我們的x,y都是2,這裡沒有變數提升,宣告下面x則變成了3,y依舊不變,所以得到5
官方注解:ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中
代碼
function f(...x) { console.log(x) // [1,2,3] } f(1,2,3)
上面的例子我們會得到一個數組,這正和它定義的一樣它會把多餘的變數一起放到一個數組裡面
function f(arr,y,...x) { console.log(x) } function f(arr,...x,y) { }
上面的兩個例子第一個可以執行並且可以得到自己想要的結果,第二個則會執行報錯,因為rest參數只能放到最後一個參數位置使用
##嚴格模式下rest如何去使用?
从Es5开始函数内已经可以定义严格模式了,但Es6规定函数参数默认值定义严格模式会报错,但也要看严格模式定义在局部还是全局
嚴格模式
function fn(a=5) { 'use strict'; console.log(a) } fn()
那我們該怎麼避免這樣的錯誤呢? 程式碼
'use strict'; function fn2(a=5) { console.log(a) } fn2() function fn() { 'use strict'; return function (a=5) { console.log(5) } } fn()() // 5
官方注解: 函数的name属性,返回该函数的函数名 使用方式 函数名.name
function a() { } console.log(a.name) // a function b() { } console.log(b.name) // a
let fn = a => a console.log(fn(10)) // 10 // 对比 let fn1 = function (a) { return a } console.log(fn1(10)) //10 let fn2 = (a,b) => a+b console.log(fn2(1,2)) // 对比 let fn21 = function (a,b) { return a+b } console.log(fn2(1,2))
通俗的解释:就是在函数中最后一步调用函数
let fn = () => { console.log(123) return () => 5 } console.log(fn()()) // 123 5
let fn = (a,b) => { if(a===b) return b console.log(1) return fn(a+1, b) } console.log(fn(1,5))
Es7中允许函数形参最后一个带有逗号,以前都是不允许带有逗号的 let fn = (a,) => { console.log(a) } fn(1)
以上是es6函數的擴充介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!