常用內建函式
Number類型的內建函式
字串轉數字
var a = '10'
var b = '20'
console.log(Number(a) + parseInt(b, 10(幾進位)))
parseFloat 轉換成有小數點的; parseFloat.toFixed() //傳需要幾位小數點
- Number.MAX_VALUE 在JS裡可存的最大數字,若超過則會不精準
- Math 很多跟數學 計算有關的
- Math.ceil 無條件進位
- Math.floor 無條件捨去
- Math.round 四捨五入
- Math.sqrt 開更號
- Math.pow 次方
- Math.random 可產生隨機數 // 0-1的數字 0~0.999999999 所以可用Math.random x 10等等
- 數字變字串 .toString() 或 (數字 + '')
String類型的內建函式
.toLowerCase, .toUpperCase 小寫變大寫 大寫變小寫
var a = 'abc'.toUpperCase()
console.log(a)
ASCII code 字串內 的電腦編碼
.charCodeAt() 找出編碼
.fromCharCode() 利用編碼還原成字
.indexOf() 尋找字串當中的單字,以所搜尋單字的第一個字在字串當中的位置顯示 若單字不存在以-1表示
.replace(原單字, 欲取代) 取代字串 但只會換第一個
若要全換要用RegExp 正規表達式 /單字/g g是global的意思.split() 把字串切開成陣列
- . trim() 把前後空格去掉
Array類型的內建函式
- .join() 在陣列空隙間結合 並回傳成一個字串
var arr = [1,2,3] console.log(arr.join("!")) => 1!2!3
- .map() 可放函式 將每個元素傳進函式
var arr = [1,2,3] function double(x){ return x*2 } console.log(arr.map(double)) => [2,4,6]
.filter() 可放函式 過濾掉false的元素
var arr = [1,2,3] console.log( arr .map(function (x){ return x*2 }) .filter(function(x) { return x>0 }) )
.slice() 只想要陣列的某一個部分
- .splice() 會改變原本array
- .sort() 根據字母順序 or 第一個字順序排
新手常犯錯誤
回傳 與 印出
function add(a,b){
console.log(a,b)
return undefined (預設)
}
console.log(add(1,2))
=>
1 2
undefined
Immutable 不可變
primitive values : all typed except objects define immutable values (ex: boolean, number, null.....)
var a = 'hello'
a += 'yo'
a: 'hello' 記憶體空間 : 0x01
a : 'helloyo' 記憶體空間 : 0x02
a會改變 但原本的hello不會變
----------------------------
var a = "hello"
a.toUpperCase()
console.log(a)
=> a並不會變
a = a.toUpperCase()
=> a才會變
array : object 一種 會改變原本的值
ex: arr.push
但 arr.indexOf 不會改變
var arr = [1,2,3]
arr : [1,2,3] 記憶體位置 0x01
arr.push(4)
arr : [1,2,3,4] 記憶體位置 0x01
遇到會改變的 return就不會是原本的
ex: arr.push()
增加一個新的值 return增加後的長度
var arr = [1,2,3,4,5]
arr.push("sdsf")
console.log(arr)
=> arr : [1,2,3,4,5,"sdsf"]
var arr = [1,2,3,4,5]
arr = arr.push("sdsf")
console.log(arr)
=> arr : 6
因此 array會改變原本值的function要注意return是什麼!!!!!!
總結:
對於字串,數字來說因為原本的值不會被改變 因此要給予一個回傳值的地方
對於array object來說 若function會改變原來的值 直接使用function
console.log
在不清楚的時候用console.log
function isPrime(num){
console.log('num;',num)
if (num ===1) return false
if (num ===2) return true
for(var i = 2; i<num; i++){
console.log('i:', i)
if (num % i === 0) {
console.log('num % i === 0:', num, i)
return false
} else {
console.log('else:', num, i)
return true
}
}
}
console.log(isPrime(3))
正解:
function isPrime(num){
if (num ===1) return false
if (num ===2) return true
for(var i = 2; i<num; i++){
if (num % i === 0) {
return false
}
}
return true
}
console.log(isPrime(15))