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接受之前的和