函式的擴充套件 與結構賦值預設值聯合使用

2021-08-16 09:52:29 字數 1079 閱讀 2960

引數預設值可以與解構賦值的預設值,結合起來使用。

function foo() 

foo({}) // undefined 5

foo() // 1 5

foo() // 1 2

foo() // typeerror: cannot read property 'x' of undefined

上面**只使用了物件的解構賦值預設值,沒有使用函式引數的預設值。只有當函式foo的引數是乙個物件時,變數xy才會通過解構賦值生成。如果函式foo呼叫時沒提供引數,變數xy就不會生成,從而報錯。通過提供函式引數的預設值,就可以避免這種情況。

function foo( = {}) 

foo() // undefined 5

上面**指定,如果沒有提供引數,函式foo的引數預設為乙個空物件。

function fetch(url,  }) 

fetch('', {})

// "get"

fetch('')

// 報錯

上面**中,如果函式fetch的第二個引數是乙個物件,就可以為它的三個屬性設定預設值。這種寫法不能省略第二個引數,如果結合函式引數的預設值,就可以省略第二個引數。這時,就出現了雙重預設值。

function fetch(url,  } = {}) 

fetch('')

// "get"

作為練習,請問下面兩種寫法有什麼差別?

// 寫法一

function m1( = {})

// 寫法二

function m2( = )

上面兩種寫法都對函式的引數設定了預設值,區別是寫法一函式引數的預設值是空物件,但是設定了物件解構賦值的預設值;寫法二函式引數的預設值是乙個有具體屬性的物件,但是沒有設定物件解構賦值的預設值。

函式引數的預設值與解構賦值的預設值

function foo 物件,沒有預設值,只有解構賦值引數的預設值 console.log x,y foo undefined 5 foo 1 5 foo 1 2 foo typeerror cannot read property x of undefined上面 只使用了物件的解構賦值預設值,...

ES6學習 函式引數預設值與解構賦值預設值

1.es6的解構 es6中引入了解構賦值的操作,其作用是 將值從陣列array或屬性從物件object提取到不同的變數中 即分為兩種情況 從陣列array中解構,以及從物件object中解構 從陣列中解構 const a,b 1,2 a 1,b 2 當然這些是基本的陣列解構賦值,你還可以用逗號,進行...

函式的擴充套件 函式引數的預設值

基本用法 es6之前不能直接為函式的引數指定預設值,只能採用變通的方法。function log x,y log hello hello world log hello china hello china log hello hello world上面 檢查函式log的引數y有沒有賦值,如果沒有,則...