1、es6之前,函式如果需要預設值,需要在函式內額外處理,如:
function log(x,y)
log('hello');//hello world
log('hello','es6');//hello es6
log('hello','');//hello world
上述**中第二行,檢查y引數是否有值,如果沒有,將其賦值為預設值'world'。
這種寫法有個問題,只要y引數的布林值為false,就會使用預設值,於是引數y無效。
就像上述**最後一行,y引數賦值為'',但無效。
一般來說,為了避免這個問題,還需要再加乙個判斷:
if(typeof y === undefined)
2、es6函式在定義時,可以賦預設值,上述**可以改為:
function log(x,y='world')
log('hello'); //hello
log('hello','es6');//hello es6
log('hello','');//hello
比es5的寫法更簡潔明瞭。
這種寫法也可以:
function para(x=0,y=0)
let para = new para();
para; //
引數預設值也可以是表示式:
const base =10;
function add(x,y=base+5)
add(5); //20
這樣也行:
function bigger(x,y=math.abs(-5))
return 'smaller';
}bigger(10); //'bigger'
使用引數預設值時,不能有同名引數,引數變數也是預設宣告的,不能用let或者const在函式內再次宣告。
另外,引數預設值不是傳值的,而是每次都會重新計算預設值表示式的值。
ES6 函式預設值
在編寫函式的時候,傳參有時會帶來一些問題 比如,有兩個引數,但是我傳參的時候只傳了乙個怎麼辦呢?或者我乙個都沒有傳怎麼辦呢?通常來說,我們都會這麼處理一下 function person name 但是如果引數很多呢?name age 等等 總不能每乙個都這麼寫吧,多麻煩啊!所以,最怕麻煩的程式設計...
方法引數 預設值 ES6 函式的預設值
es6 之前,不能直接為函式的引數指定預設值,只能採用變通的方法。function log x,y log hello hello world log hello 你好 hello china 這裡可以看到,檢查函式log的引數y有沒有賦值,如果沒有,則指定預設值為 哈嘍 這種寫法的缺點在於,如果引...
ES6 函式引數的預設值
在es6之前,不能直接為函式的引數指定預設值,只能採取變通的方法。function log x,y log kkk kkk world這種寫法的缺點在於 如果引數y賦值了,但是對應的布林值為false,則該賦值不起作用。如果在呼叫函式的時候,傳入的y引數是乙個空字串,那麼y就會被修改為預設值。避免這...