js判斷 val1 和 val2 是否完全等同

function identity(val1, val2) {
    /*這題的意思應該是考===完全相等,
    除此之外應注意到的是NaN和+0與-0,這個在===中的判斷是錯誤的,
    建議使用es6新增的能力Object.is(),與===不同之處只有兩個:
    一是 +0 不等於 -0 ,二是 NaN 等於自身。*/
    if(val1===val2){
        // +0不等於-0;但是用===的話會返回true;所以要做額外的判斷;
        // 1/+0是Infinity,1/-0是-Infinity
        return val1 !== 0 || val2 !== 0 || 1/val1 === 1/val2;
    }else {
        //NaN等於NaN 但是NaN === NaN 等於false;所以做額外的判斷
        return val1 !== val1 && val2!== val2;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章