2025年11月24日 星期一

關於 isFinite()

 關於 isFinite()

前言

  在先前的 關於 Infinity 提到 Infinity ,  JavaScript 提供 isFinite() 確認是否有限,但用起來有點跟想的不一樣,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Infinity === Number.POSITIVE_INFINITY );//true
console.log( -Infinity === Number.NEGATIVE_INFINITY );//true
//
console.log( !isFinite( Infinity ) );//true
console.log( !isFinite( Number.POSITIVE_INFINITY ) );//true
console.log( !isFinite( NaN ) );//true
//
console.log( !Number.isFinite( Infinity ) );//true
console.log( !Number.isFinite( NaN ) );//true


JavaScript 其實提供 Number.POSITIVE_INFINITY 與 Number.NEGATIVE_INFINITY 分別代表正無限與負無限,但感覺用起來不如 Infinity 與 -Infinity 來的簡潔。使用 isFinite() 來確認是否無限,也許就直接使用 !isFinite() 來直接完成,簡短又直覺,但這個方法不能檢查像是 NaN 的狀況!所以如果要檢查是否無限,透過直接比較 Infinity 與 -Infinity 即可。最後 isFinite() 不只一個地方有,Number.isFinite() 也有提供,效果是一樣的。


參考資料

[ developer.mozilla.org ] isFinite()


相關文章與資料

關於 Infinity


2025年11月17日 星期一

關於 Infinity

 關於 Infinity

前言

  JavaScript 跟常見的程式語言有扁不太一樣,一般除零會發生 exception ,但 JavaScript 卻不會! JavaScript 使用 Infinity 來處理這種狀況,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( 1 / 0 );//Infinity
console.log( Infinity * -1 );//-Infinity
console.log( Infinity / Infinity );//NaN
console.log( Infinity / -Infinity );//NaN
console.log( 1 / Infinity );//0
console.log( 1 / -Infinity );//0


Infinity 是除零後的結果,它是一個常數的存在,可以利用乘上 -1 得到 -Infinity ,那如果 Infinity 除以 Infinity 呢?可以看到結果會是 NaN ,最後如果除以 Infinity 後的結果是 0 。 


參考資料

[ developer.mozilla.org ] Infinity

2025年11月10日 星期一

關於 'arguments' 變數修改 rest parameters 的問題

 關於 'arguments' 變數修改 rest parameters 的問題

前言

  在先前的 關於 'arguments' 變數搭配 rest parameters 的問題 提到 rest parameters ,如果對 rest parameters 進行修改會有什麼行為?在此把學習的過程做個紀錄。


內容

  範例如下

function call( ...arg ){
  console.log( arguments.length);//2
  //
  arg[ 0 ] = 1234;
  console.log( arguments[0] );//1
  //
  arguments[ 1 ] = 9999;
  console.log( arg[1] );//2

}
//
call( 1 , 2 );


範例分別示範從 rest parameters  修改與從 'arguments' 變數修改,可以看不論是哪一個結果都不會發生一同修改的狀況!所以當採用 rest parameters 傳入引數, 'arguments' 變數採用的是複製一份 rest parameters  ,而不是同一個變數。


參考資料

[ developer.mozilla.org ] Rest parameters


想關文章與資料

關於 'arguments' 變數搭配 rest parameters 的問題

關於修改 'arguments' 變數

2025年11月3日 星期一

關於 'arguments' 變數搭配 rest parameters 的問題

 關於 'arguments' 變數搭配 rest parameters 的問題

前言

   'arguments' 變數搭配 rest parameters 時, arguments.length 會如何變化?在此把學習的過程做個紀錄。


內容

  範例如下

function call( ...arg ){
  console.log( arguments.length);
}
//
function callMultiArg( a , b , ...arg ){
  console.log( arguments.length);
}
//
call();//0
call( 1 );//1
call( 1 , 2 );//2
call( 1 , 2 , 3 );//3
//
callMultiArg();//0
callMultiArg( 1 );//1
callMultiArg( 1 , 2 );//2
callMultiArg( 1 , 2 , 3 );//3
callMultiArg( 1 , 2 , 3 , 4 );//4


在 call() 的使用範例可以看到,雖然 arg 只是一個變數,但 arguments.length 會隨著傳入的數量改變,接著看 callMultiArg() 的使用範例,一樣的問題, arg 一樣不會被只視為一個變數,也就是說 rest parameters 雖然讓變數濃縮報一個陣列裡,但對 arguments.length 而言還是會依據傳入的數量來決定數值。


參考資料

[ developer.mozilla.org ] Rest parameters


相關文章與資料

關於 Function 的 'arguments' 變數