2025年10月13日 星期一

關於 Function 的 'arguments' 變數

 關於 Function 的 'arguments' 變數 

前言

  Function  裡有個特別的變數 'arguments' ,該變數儲存了所有傳進 Function 的引數,由於以前我很少用它,所以最近發現它和我想得有些不一樣,在此把學習的過程做個紀錄。


內容

  範例如下

function call(){
  console.log( arguments.length );
};
call();//0
call( 1234 );//1
//
function showArgs( a , b){
  console.log( `${a}_${b}` );
};
showArgs(1);//1_undefined


範例開頭透過 call() 來測試如果傳入引數的數量大於宣告的引數數量時的狀況,結果和我想的不一樣,本以為會報錯,但事實上是不會報錯,而且 'arguments' 能正確取得多出來的引數,接著透過 showArgs() 測試當引數數量少於宣告數量時的狀況,結果也不會報錯,只是少傳的引數會是 undefined 而已。結論,不論引數是多傳或少傳,JavaScript 都不會報錯,宣告的引數比較像是給人看引數期望如何被傳入。


參考資料

[ developer.mozilla.org ] The arguments object

2025年10月6日 星期一

在預設引數( Default parameters)裡使用 earlier parameter

 在預設引數( Default parameters)裡使用 earlier parameter

前言

  預設引數( Default parameters) 是可以使用 earlier parameter ,在此把學習的過程做個紀錄。


內容

  範例如下

function showMsg( msg1 = 'Hello' , msg2 = 'World' , lastMsg = `${msg1} ${msg2}`){
  console.log(lastMsg);
}
//
showMsg();//Hello World
showMsg( 'Happy' );//Happy World"
showMsg( 'Happy' , 'birthday' );//Happy birthday
showMsg( '' , '' , 'Just a msg' );//Just a msg
//
function showError( lastMsg = `${ msg }` , msg ='1234'){
  console.log( lastMsg );
}
//Follow has error!
// showError();


使用 earlier parameter 只要直接使用就可以,如範例的 showMsg() ,msg1 與 msg2 都會在 lastMsg 被使用,範例接著分別示範各個預設變數的狀況,如同預期,不過使用 earlier parameter 要注意先後順序的問題,如 showError() ,在 earlier parameter 使用 msg 變數,但 msg 變數在後面才出現,雖然只是宣告這樣的 Function 不會報錯,但如果直接喚起就會發生錯誤!


參考資料

[ developer.mozilla.org ] Default parameters


相關文章與資料

初探解構賦值

2025年9月29日 星期一

在預設引數( Default parameters)裡使用物件為引數的解構賦值

 在預設引數( Default parameters)裡使用物件為引數的解構賦值

前言

  在之前的 在預設引數( Default parameters)裡使用解構賦值 裡使用陣列來示範引數,但其實還可以使用物件的方式當引數,在此把學習的過程做個紀錄。


內容

  範例如下

function call({ str = 'default' , num = -1} = {}){
  console.log(`${str}_${num}`);
}
//
call();//default_-1
call( { str : 'Jack' } );//Jack_-1
call( { num : 9999 } );//default_9999
call( { str : 'Tim' , num : 1234 } );//Tim_1234


用法和陣列時一樣,只是語法改成 {} 來包覆,第一例都不傳變數,如同預期會出現預設的數值,而非 undefined 之類的數值,第二例只給 str 所以 num 的部分還是維持預設值,第三例只給 num 所以 str 的部分維持預設值,最後示範 str 與 num 都不用預設值。


參考資料

[ developer.mozilla.org ] Default parameters

[ developer.mozilla.org ] 解構賦值


相關文章與資料

在預設引數( Default parameters)裡使用解構賦值

2025年9月22日 星期一

在預設引數( Default parameters)裡使用解構賦值

 在預設引數( Default parameters)裡使用解構賦值

前言

  解構賦值可以在預設引數( Default parameters)裡使用,在此把學習的過程做個紀錄。


內容

  範例如下

function call( [ x = 1 , y = 2 , z = 3] = []){
  return x + y + z;
}
//
console.log( call() );//6
console.log( call( [] ) );//6
console.log( call( [ 4 ] ) );//9
console.log( call( [ 4 , 5 ] ) );//12
console.log( call( [ 4 , 5 , 6 ] ) );//15


當都不給變數,如預期就是 6 ,接著第二例給空陣列,結果也是 6 ,解構賦值沒覆蓋到的值,就會是預設值,可以在第三例到第五例看到這樣狀況。


參考資料

[ developer.mozilla.org ] Default parameters

[ developer.mozilla.org ] 解構賦值


相關文章與資料

關於預設引數( Default parameters)

初探解構賦值

2025年9月15日 星期一

注意預設引數( Default parameters)對 undefined 的處理

 注意預設引數( Default parameters)對 undefined 的處理

前言

  在之前的 關於預設引數( Default parameters) 提及預設引數( Default parameters),不過發現它對

 undefined 對反應要注意,在此把學習的過程做個紀錄。


內容

  範例如下

function call( arg = 1 ) {
  console.log( arg );
}

call();//1
call( undefined );//1 
call( null );//null 


預設引數( Default parameters)對 undefined 的處理是特別的,如果不輸入引數時其實是可以視同輸入 undefined ,這可以在範例的第一例與第二例看到,那 null 又是如何呢? null 的行為和一般的情況一樣,不會像 undefined 一樣視同沒輸入。


參考資料

[ developer.mozilla.org ] Default parameters


相關文章與資料

關於預設引數( Default parameters)

2025年9月8日 星期一

關於預設引數( Default parameters)

 關於預設引數( Default parameters)

前言

  不知從什麼時候開始 JavaScript 開始支援預設引數( Default parameters) ,在此把學習的過程做個紀錄。


內容

  範例如下

function call( name = 'DefaultName' ){
  return name
}
//
console.log( call() );//DefaultName
//
function testCall1( val1 = 1 , val2 ){
  return val1 + val2;
}
console.log( testCall1(1) );//NaN
//
function testCall2( val1 , val2 = 1 ){
  return val1 + val2;
}
console.log( testCall2(1) );//2


預設引數( Default parameters) 用起來很簡單,只要在宣告時在引數後方給予預設值即可使用,不過要注意多個引數又有的沒預設引數的狀況,像 testCall1() 的結果遽然是 NaN ,理由也很簡單引為匹配引數時並不如預期,預期是 testCall1( 1(default) ,1) ,但最後匹配的是 testCall1( 1 , undefined ) ,像 testCall2() 這樣就沒問題,會如預期一樣匹配,所以有預設值的引數要盡量向後擺。


參考資料

[ developer.mozilla.org ] Default parameters

2025年9月1日 星期一

關於 Unary plus (+)

 關於 Unary plus (+)

前言

  在之前的 關於 Unary negation (-) 了解 Unary negation ,這次來學習它的相似處理 Unary plus,在此把學習的過程做個紀錄。


內容

  範例如下

let num = -4;
console.log( +num );//-4
console.log( +"123" );//123
console.log( +"-456" );//-456
console.log( +"ABC" );//NaN


Unary plus 用起來跟 Unary negation 是一樣的!在 Numbe 有加跟沒加是一樣的, Unary negation  還有負負得正的作用。在 String 方面也是會對可以 Parse 成 Number 的內容做轉換,如果不能則回傳 NaN。


參考資料

[ developer.mozilla.org ] Unary plus (+)


相關文章與資料

關於 Unary negation (-)