引數預設值可以與解構賦值的預設值,結合起來使用。
function foo()
foo({}) // undefined 5
foo() // 1 5
foo() // 1 2
foo() // typeerror: cannot read property 'x' of undefined
上面**只使用了物件的解構賦值預設值,沒有使用函式引數的預設值。只有當函式foo
的引數是乙個物件時,變數x
和y
才會通過解構賦值生成。如果函式foo
呼叫時沒提供引數,變數x
和y
就不會生成,從而報錯。通過提供函式引數的預設值,就可以避免這種情況。
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有沒有賦值,如果沒有,則...