1、數據類型:
undefined, null, boolean, object, number, string,
2、typeof 操作符
返回字符串: string, boolean, undefined,function, object, number,typeof操作符的缺陷是: Chrome7 以及之前的版本,正則表達式的typeof返回的是function,其他的會返回object。
typeof(XXXX)// typeof是操作符不是函數,所以()可有可無
typeof XXX
typeof null // 返回object,迷惑吧,null被認爲是一個空對象值, null是指一個空對象指針
alert(null == undefined) // 返回true 因爲undefined是派生於null
3、數據類型轉換返回結果表
// 表格中的定義其實是js做隱式轉換很有作用,字符串testBoolean被偷偷轉換成true
let testBoolean = '88888';
if (testBoolean ) {
alert('進入true判斷');
} // 彈出對話框 “進入true判斷”
數據類型 | 轉化爲true的值 | 轉化爲false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | " " 空字符串 |
Number | 非0數字值 | 0或者NAN |
Objext | 任何對象 | null |
Undefined | undefined |
4、isNaN()函數
// 在基於對象調用isNaN()函數時候,會首先調用對象的valueOf()方法,然後確認該方法返回的值是否可以轉化成數值,如果不能,前面返回的值再調用toString()方法,看其返回值。
alert(isNaN(NaN)) // true
alert(isNaN(10)) // false 能轉化成10
alert(isNaN("10")) // false 能轉化成10
alert(isNaN("XXXX")) // true 不能轉化成數值
alert(isNaN(true)) // false 能轉化成1
5、轉化成數值的函數(Number(), parseInt(), parseFloat())
parseInt()相對於Number()來說能轉化十六進制,八進制到十進制,但是es5後八進制前面的0會默認去掉,並不是以往的那樣算法了,後來爲了解決這個問題,對parseInt()入參做了修改,如let num = parseInt(“oxAF”, 16);16代表16進制
5、toStirng()用法
let num = 10;
alert(num.toString()) // '10' 默認是10進制
alert(num.toStirng(2)) // '1010' 轉化成2進制的字符串
alert(num.toStirng(8)) // '12' 轉化成8進制的字符串
alert(num.toStirng(null)) // 'null'
alert(num.toStirng(undefined)) // 'undefined'
6、sort()的用法
// JavaScript中數組的sort()方法主要用於對數組的元素進行排序。其中,sort()方法有一個可選參數。但是,此參數必須是函數。 數組在調用sort()方法時,如果沒有傳參將按字母順序(字符編碼順序)對數組中的元素進行排序,如果想按照其他標準進行排序,就需要進行傳一個參數且爲函數,該函數要比較兩個值,並且會返回一個用於說明這兩個值的相對順序的數字。
var arr = [{'name': '張三', age: 26},{'name': '李四', age: 12},{'name': '王五', age: 37},{'name': '趙六', age: 4}];
var objectArraySort = function (keyName) {
return function (objectN, objectM) {
var valueN = objectN[keyName]
var valueM = objectM[keyName]
if (valueN < valueM) return 1
else if (valueN > valueM) return -1
else return 0
}
}
arr.sort(objectArraySort('age'))
console.log(arr)
6、js操作方法
(1)concat()
let test1 = ['1111', '2222'];
let test2 = test1.concat("333", ['444', '555'])
alert(test1) // ['1111', '2222']
alert(test2) // ['1111', '2222', '444', '555']
(2) slice()
let test1 = ['1111', '2222', '3333','4444'];
let test2 = test1.slice(1); // 2222,3333,4444
let test3 = test1.slice(1,3); // 2222,3333
(3) splice()
let colors = ['red', 'green', 'blue'];
let removed= colors.splice(0,1);
alert(colors); // green, blue
alert(removed); // red
removed= colors.splice(1,0,'yellow', 'orange')
alert(colors); // green,yellow, orange,blue
alert(removed); //返回空值
removed= colors.splice(1,1,'red', 'purple')
alert(colors); // green,red,purple, orange,blue
alert(removed); // yellow
7、迭代方法
(1) every() 、 filter() forEach() map() some()
let numbers = [1,2,3,4,5,6,7,8]
let result = numbers.every(temp => temp > 2) // false 有一個不符合條件就false
let result2 = numbers.some(temp => temp > 2) // true 存在一個符合條件就是true
let result3 = numbers.filter(temp => temp > 2) // [3, 4, 5, 6, 7, 8]
let result4 = numbers.map(temp => temp * 2) // [2, 4, 6, 8, 10, 12, 14, 16]
numbers.forEach( temp => {console.log('rrr', temp)}) // 相當於for循環,在內部操作
8、並歸方法
reduce(), reduceRight()
let arrays = [1,2,3,4,5,6,7,8]
let sum = arrays.reduce(function(prev, cur, index, array) { return prev + cur}) // 36 prev接受之前的和