// import isNaN from 'lodash-es/isNaN.js'
/**
* 判斷是否為NaN
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/isnan.test.mjs Github}
* @memberOf wsemi
* @param {*} v 輸入任意資料
* @returns {Boolean} 回傳判斷布林值,包裝物件依其原始值判定
* @example
*
* console.log(isnan(NaN))
* // => true
*
*/
function isnan(v) {
// return isNaN(v)
if (v !== v) {
return true
}
//包裝物件(new Number(NaN))以Number.prototype.valueOf取原始值, 非Number物件即拋錯而為false
// 不呼叫物件自身之valueOf、不以內部標籤判定, 防一般物件偽裝
if (v !== null && typeof v === 'object') {
try {
let p = Number.prototype.valueOf.call(v)
return Number.isNaN(p)
}
catch (err) {
return false
}
}
return false
}
export default isnan