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

2021-08-16 09:48:35 字數 1451 閱讀 3578

基本用法

es6之前不能直接為函式的引數指定預設值,只能採用變通的方法。

function log(x, y) 

log('hello') // hello world

log('hello', 'china') // hello china

log('hello', '') // hello world

上面**檢查函式log的引數y有沒有賦值,如果沒有,則指定預設值為world。這種寫法的缺點在於,如果引數y賦值了,但是對應的布林值為false,則該賦值不起作用。就像上面**的最後一行,引數y等於空字元,結果被改為預設值。

為了避免這個問題,通常需要先判斷一下引數y是否被賦值,如果沒有,再等於預設值。

為了避免這個問題,通常需要先判斷一下引數y是否被賦值,如果沒有,再等於預設值。

if (typeof y === 'undefined')
es6 允許為函式的引數設定預設值,即直接寫在引數定義的後面。
function log(x, y = 'world') 

log('hello') // hello world

log('hello', 'china') // hello china

log('hello', '') // hello

引數變數是預設宣告的,所以不能用letconst再次宣告。

function foo(x = 5)
使用引數預設值時,函式不能有同名引數。

// 不報錯

function foo(x, x, y)

// 報錯

function foo(x, x, y = 1)

// syntaxerror: duplicate parameter name not allowed in this context

另外,乙個容易忽略的地方是,引數預設值不是傳值的,而是每次都重新計算預設值表示式的值。也就是說,引數預設值是惰性求值的。

let x = 99;

function foo(p = x + 1)

foo() // 100

x = 100;

foo() // 101

上面**中,引數p的預設值是x + 1。這時,每次呼叫函式foo,都會重新計算x + 1,而不是預設p等於 100。

lua 函式 預設值 定義函式引數的預設值

如果你想要命名引數和預設值,如php或python,你可以使用表構造函式呼叫你的函式 myfunction 函式本身可以有這樣的簽名 function myfunction t setmetatable t,local a,c t 1 or t.a,t 2 or t.b,t 3 or t.c fun...

函式(引數,預設值)

js定義函式引數沒有非常嚴格的要求,可以有也可以沒有,在呼叫的時候也是,引數可以有可以沒有,也可以和定義時的引數個數不一致 沒有給count傳入引數,預設為10 也可以直接在引數中給count賦值 但是特別注意的是不能給count傳入0,因為0與undefined都是false,因此count傳入的...

函式引數預設值

include 函式預設值為0 intmul int x 0 c語言編譯器會報錯,c 不會 intmain int argc,char ar 預設值不需要在定義時給出,宣告時給出即可 intmul int x 函式預設引數的規則 引數的預設值必須從右向左匹配 函式呼叫時使用了預設值,則後續引數必須使...