摘要:語(yǔ)法使用使用翻譯一下傳值檢測(cè)從翻譯的結(jié)果可以看出,默認(rèn)參數(shù)只檢查兩種情況不傳參數(shù)傳入前參后用前面的參數(shù)可以作為后面參數(shù)的默認(rèn)值,甚至可以對(duì)前面的參數(shù)做一些特別的操作,比如簡(jiǎn)單的加減乘除默認(rèn)參數(shù)調(diào)用函數(shù)賦值默認(rèn)參數(shù)甚至可以調(diào)用函數(shù),可以調(diào)用函
0x000 語(yǔ)法
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 傳值檢測(cè)
從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)值,甚至可以對(duì)前面的參數(shù)做一些特別的操作,比如簡(jiǎn)單的加減乘除
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)說(shuō)明無(wú)所不能了~
function sum(a=1, b=(()=>4)()){ return [a, b] } sum() // [1, 4] sum(2) // [2, 4] sum(2,2) // [2, 2]
注意: 無(wú)法調(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í)候傳輸?shù)捻樞蛞灰桓采w的,不會(huì)因?yàn)樗心J(rèn)值就跳過(guò)該形參的賦值
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)還沒(méi)在這系列出現(xiàn)過(guò)
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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99115.html
摘要:概述實(shí)不相瞞,解構(gòu)賦值非常叼,特別是和其他一起使用的時(shí)候,那如何簡(jiǎn)單的說(shuō)解構(gòu)賦值呢,打個(gè)比方解構(gòu)賦值就是一個(gè)硬幣拆分機(jī),將所有的一毛五毛一塊硬幣投入硬幣拆分機(jī),他就自動(dòng)將所有的硬幣分好了,拿出你要的就行了解構(gòu)數(shù)組可以從一個(gè)數(shù)組從取出你想要的 0x000 概述 實(shí)不相瞞,解構(gòu)賦值非常叼,特別是和其他es6一起使用的時(shí)候,那如何簡(jiǎn)單的說(shuō)解構(gòu)賦值呢,打個(gè)比方:解構(gòu)賦值就是一個(gè)硬幣拆分機(jī),將所...
0x000 概述 模塊化是一個(gè)大型項(xiàng)目的必然趨勢(shì)。 0x001 命名導(dǎo)出 可以使用export關(guān)鍵字,導(dǎo)出你要導(dǎo)出的東西,可以導(dǎo)出常量、變量、函數(shù)、類(lèi), // export.js export var var0 = var0 // 直接導(dǎo)出 var 聲明 export let let0 = let0 // 直接導(dǎo)出 let 聲明 export const const0 = const // 直...
摘要:概述剩余參數(shù)將沒(méi)有對(duì)應(yīng)形參的參數(shù)聚合成一個(gè)數(shù)組語(yǔ)法只聚合未對(duì)應(yīng)形參參數(shù)剩余參數(shù)只會(huì)將沒(méi)有對(duì)應(yīng)形參的參數(shù)聚合成一個(gè)數(shù)組而則是包含了所有的參數(shù)。剩余參數(shù)是數(shù)組剩余參數(shù)始終是一個(gè)數(shù)組,而不像是一個(gè)偽數(shù)組轉(zhuǎn)化成數(shù)組解構(gòu)剩余參數(shù)使用翻譯翻譯后 0x000 概述 剩余參數(shù)將沒(méi)有對(duì)應(yīng)形參的參數(shù)聚合成一個(gè)數(shù)組 0x001 語(yǔ)法 function(a, b, ...theArgs) { } 0x002 ...
摘要:概述展開(kāi)符號(hào)真的是一個(gè)非常好用的東西,我常用于字符串分割數(shù)組合并數(shù)組拷貝對(duì)象合并對(duì)象拷貝。 0x000 概述 展開(kāi)符號(hào)真的是一個(gè)非常好用的東西,我常用于字符串分割、數(shù)組合并、數(shù)組拷貝、對(duì)象合并、對(duì)象拷貝。 0x001 語(yǔ)法 ...iterableObj 0x002 函數(shù)調(diào)用的時(shí)候參數(shù)展開(kāi) 這是在函數(shù)調(diào)用的時(shí)候,將參數(shù)展開(kāi),和剩余參數(shù)有區(qū)別,剩余參數(shù)是在函數(shù)聲明中使用 myFunctio...
摘要:這就是所謂的箭頭函數(shù)不綁定,而在我看來(lái),回調(diào)函數(shù)就是箭頭函數(shù)最好的歸宿。 0x000 概述 箭頭函數(shù)有兩個(gè)作用: 更簡(jiǎn)短的寫(xiě)法 不綁定this 0x001 語(yǔ)法一表覽 ()=>{} ()=>{console.log(arrow);return null} ()=>hello (num1, num2)=>num1+num2 num=>++num ()=>({name:arrow})...
閱讀 1830·2021-11-23 09:51
閱讀 950·2021-10-08 10:05
閱讀 3434·2021-09-26 09:55
閱讀 1045·2021-09-22 15:21
閱讀 1635·2021-09-09 09:33
閱讀 1275·2019-08-30 15:56
閱讀 1287·2019-08-30 15:55
閱讀 972·2019-08-30 13:19