javascript學習整理一

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接受之前的和
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章