摘要:語法使用使用翻譯一下傳值檢測從翻譯的結(jié)果可以看出,默認(rèn)參數(shù)只檢查兩種情況不傳參數(shù)傳入前參后用前面的參數(shù)可以作為后面參數(shù)的默認(rèn)值,甚至可以對前面的參數(shù)做一些特別的操作,比如簡單的加減乘除默認(rèn)參數(shù)調(diào)用函數(shù)賦值默認(rèn)參數(shù)甚至可以調(diào)用函數(shù),可以調(diào)用函
0x000 語法
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { statements }0x001 使用
function sum(a=0, b=0){ return a+b } sum() // 0 sum(1) // 1 sum(1, 2) // 3
使用babel翻譯一下
function sum() { var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return a + b; }0x002 傳值檢測
從babel翻譯的結(jié)果可以看出,默認(rèn)參數(shù)只檢查兩種情況
不傳參數(shù)
傳入undefined
function sum(a=0){ return typeof a } sum() // "number" sum(undefined)// "number" sum(1) // "number" sum("1") // "string" sum(null) // "object" sum(false)// "boolean"0x003 前參后用
前面的參數(shù)可以作為后面參數(shù)的默認(rèn)值,甚至可以對前面的參數(shù)做一些特別的操作,比如簡單的加減乘除
function sum(a=1, b=a, c=a+b){ return [a, b, c] } sum() // [1, 2, 3] sum(2) // [2, 2, 4] sum(2,2) // [2, 2, 4] sum(2,2,2) // [2, 2, 2]0x004 默認(rèn)參數(shù)調(diào)用函數(shù)
賦值默認(rèn)參數(shù)甚至可以調(diào)用函數(shù),可以調(diào)用函數(shù),就已經(jīng)說明無所不能了~
function sum(a=1, b=(()=>4)()){ return [a, b] } sum() // [1, 4] sum(2) // [2, 4] sum(2,2) // [2, 2]
注意: 無法調(diào)用函數(shù)內(nèi)部聲明的函數(shù)作為默認(rèn)值
function sum(a=1, b=num2()){ function num2(){ return 4 } return [a, b] } sum() // Uncaught ReferenceError: num2 is not defined0x005 按序覆蓋
參數(shù)還是按調(diào)用的時候傳輸?shù)捻樞蛞灰桓采w的,不會因為它有默認(rèn)值就跳過該形參的賦值
function sum(a=1, b ){ return [a, b] } sum() // [1, undefined] sum(2)// [2, undefined] sum(1,2) //[1, 2]0x006 解構(gòu)賦值默認(rèn)參數(shù)
結(jié)構(gòu)中也可以使用默認(rèn)參數(shù),雖然結(jié)構(gòu)還沒在這系列出現(xiàn)過
function sum([x, y] = [1, 2], {z: z} = {z: 3}) { return [x, y, z]; } sum() // [1, 2, 3] sum([2,4],{z: 6}) // [2, 4, 6]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/99115.html
摘要:概述實不相瞞,解構(gòu)賦值非常叼,特別是和其他一起使用的時候,那如何簡單的說解構(gòu)賦值呢,打個比方解構(gòu)賦值就是一個硬幣拆分機(jī),將所有的一毛五毛一塊硬幣投入硬幣拆分機(jī),他就自動將所有的硬幣分好了,拿出你要的就行了解構(gòu)數(shù)組可以從一個數(shù)組從取出你想要的 0x000 概述 實不相瞞,解構(gòu)賦值非常叼,特別是和其他es6一起使用的時候,那如何簡單的說解構(gòu)賦值呢,打個比方:解構(gòu)賦值就是一個硬幣拆分機(jī),將所...
0x000 概述 模塊化是一個大型項目的必然趨勢。 0x001 命名導(dǎo)出 可以使用export關(guān)鍵字,導(dǎo)出你要導(dǎo)出的東西,可以導(dǎo)出常量、變量、函數(shù)、類, // export.js export var var0 = var0 // 直接導(dǎo)出 var 聲明 export let let0 = let0 // 直接導(dǎo)出 let 聲明 export const const0 = const // 直...
摘要:概述剩余參數(shù)將沒有對應(yīng)形參的參數(shù)聚合成一個數(shù)組語法只聚合未對應(yīng)形參參數(shù)剩余參數(shù)只會將沒有對應(yīng)形參的參數(shù)聚合成一個數(shù)組而則是包含了所有的參數(shù)。剩余參數(shù)是數(shù)組剩余參數(shù)始終是一個數(shù)組,而不像是一個偽數(shù)組轉(zhuǎn)化成數(shù)組解構(gòu)剩余參數(shù)使用翻譯翻譯后 0x000 概述 剩余參數(shù)將沒有對應(yīng)形參的參數(shù)聚合成一個數(shù)組 0x001 語法 function(a, b, ...theArgs) { } 0x002 ...
摘要:概述展開符號真的是一個非常好用的東西,我常用于字符串分割數(shù)組合并數(shù)組拷貝對象合并對象拷貝。 0x000 概述 展開符號真的是一個非常好用的東西,我常用于字符串分割、數(shù)組合并、數(shù)組拷貝、對象合并、對象拷貝。 0x001 語法 ...iterableObj 0x002 函數(shù)調(diào)用的時候參數(shù)展開 這是在函數(shù)調(diào)用的時候,將參數(shù)展開,和剩余參數(shù)有區(qū)別,剩余參數(shù)是在函數(shù)聲明中使用 myFunctio...
摘要:這就是所謂的箭頭函數(shù)不綁定,而在我看來,回調(diào)函數(shù)就是箭頭函數(shù)最好的歸宿。 0x000 概述 箭頭函數(shù)有兩個作用: 更簡短的寫法 不綁定this 0x001 語法一表覽 ()=>{} ()=>{console.log(arrow);return null} ()=>hello (num1, num2)=>num1+num2 num=>++num ()=>({name:arrow})...
閱讀 1885·2021-11-23 09:51
閱讀 1028·2021-10-08 10:05
閱讀 3494·2021-09-26 09:55
閱讀 1103·2021-09-22 15:21
閱讀 1681·2021-09-09 09:33
閱讀 1464·2019-08-30 15:56
閱讀 1345·2019-08-30 15:55
閱讀 1024·2019-08-30 13:19