es6 之前,不能直接為函式的引數指定預設值,只能採用變通的方法。
function log(x, y)
log('hello') // hello world
log('hello', '你好') // hello china
這裡可以看到,檢查函式log
的引數y
有沒有賦值,如果沒有,則指定預設值為『哈嘍』。
這種寫法的缺點在於,如果引數y
賦值了,但是對應的布林值為false
,則該賦值不起作用。就像下面**,引數y
等於空字元,結果被改為預設值。
function log(x, y)
log('hello', '') // hello 哈嘍
為了避免這個問題,通常需要先判斷一下引數y
是否被賦值,如果沒有,再等於預設值。
if (typeof y === 'undefined')
直接寫在引數定義的後面
var a = prompt()
function log(x, y = '哈嘍')
log('hello') // hello 哈嘍
log('hello', a) // hello 哈嘍
這裡可以看到 引數y等於空字元,結果也沒有被改。
es6 的寫法比 es5 簡潔許多,而且非常自然
es6裡面引數變數是預設宣告的,所以不能用let
或const
再次宣告。
上面**中,引數變數x
是預設宣告的,在函式體中,不能用let
或const
再次宣告,否則會報錯。
使用引數預設值時,函式不能有同名引數。
// 不報錯
function foo(x, x, y)
// 報錯
這裡可以看到,有同名函式的話也會報錯
今天就到這裡了!
ES6 函式引數的預設值
在es6之前,不能直接為函式的引數指定預設值,只能採取變通的方法。function log x,y log kkk kkk world這種寫法的缺點在於 如果引數y賦值了,但是對應的布林值為false,則該賦值不起作用。如果在呼叫函式的時候,傳入的y引數是乙個空字串,那麼y就會被修改為預設值。避免這...
ES6 函式預設值
1 es6之前,函式如果需要預設值,需要在函式內額外處理,如 function log x,y log hello hello world log hello es6 hello es6 log hello hello world上述 中第二行,檢查y引數是否有值,如果沒有,將其賦值為預設值 wor...
ES6 函式預設值
在編寫函式的時候,傳參有時會帶來一些問題 比如,有兩個引數,但是我傳參的時候只傳了乙個怎麼辦呢?或者我乙個都沒有傳怎麼辦呢?通常來說,我們都會這麼處理一下 function person name 但是如果引數很多呢?name age 等等 總不能每乙個都這麼寫吧,多麻煩啊!所以,最怕麻煩的程式設計...