###### tags: `ALPHACampWeek1` JS小知識 === Js的Scanf : prompt('input something') --- ```javascript= input = prompt('Guess number') ``` 判斷是否為數字 isNaN() --- ```javascript= if (!isNaN(answer) && answer <= 100 && answer > 0) { console.log(`Answer is: ${answer}`) break } ``` undefined vs null --- - undefined 來代表「尚未初始化的變數」,而 null 代表「不存在的物件」,因此,遇到「沒有物件」的情況時,會得到 null。 - 現在我們的建議是這樣,把 undefined 留給系統,不要主動使用它,當變數沒有被初始化,或你試著呼叫一個不存在的物件屬性或陣列內容時,你會收到 undefined;而當你想有意識地賦予「空值」給變數時,使用 null。 特殊用法:要驗證是否為物件要先宣告為null --- const result = null if (result && typeof result === 'object') { console.log('this is an object!!') } else { console.log('i cannot find an object!') } Math套件 --- Math.ceil() - 小數點自動進位 Math.floor() - 自動捨去小數點 Math.round() - 四捨五入 其他還有: Math.sqrt(64) - 開平方,會回傳 8 Math.abs(-4) - 絕對值,會回傳 4 Math.random() - 取亂數,會回傳 0~1 (不包括 1) 的隨機數字 Math.pow(2, 3) - 次方,這裡會回傳 2 的 3 次方,也就是 8 四捨五入到小數第二位 --- Number(((length) / 2).toFixed(2 - 通過倍數讓小數點消失 const x = 0.1 const y = 0.2 const result = (x * 10 + y * 10) / 10 console.log(result === 0.3) // true call by value vs. call by reference --- 數字 => call by value 物件,陣列 => call by reference 用Object.assign可以解決call by reference的問題 --- - 物件通常都用const來宣告 let a = { foo: 1 } let clone = {} Object.assign(clone, a)