2025年10月20日 星期一

關於修改 'arguments' 變數

 關於修改 'arguments' 變數 

前言

  在之前的 關於 Function 的 'arguments' 變數 提及了 'arguments' 變數 ,最近發現它遽然可以被賦值!賦值是什麼意思?在此把學習的過程做個紀錄。


內容

  範例如下

function call( arg ){
  console.log( arg );//1
  console.log( arguments[ 0 ] );//1
  //
  arguments[ 0 ] = 99;
  console.log( arg );//99
  console.log( arguments[ 0 ] );//99
  //
  arg = 9999;
  console.log( arg );//9999
  console.log( arguments[ 0 ] );//9999
}
//
call(1);


 'arguments' 變數是可以賦值的!賦值後連原本的變數也會跟著改變,對著 'arguments' 變數賦值 99 後,不論是 'arguments' 變數或是對應的引數都隨之改變,對著引數賦值 9999 ,引數與  'arguments' 變數也是憶起改變的。雖然我從不對引數賦值,本以為這個行為應該會報錯,但事實是這個行為是允許的。


參考資料

[ developer.mozilla.org ] The arguments object


相關文章與資料

關於 Function 的 'arguments' 變數

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


相關文章與資料

初探解構賦值