typeof与instanceof都是判断数据类型的方法,区别如下:
- typeof会返回一个变量的基本类型,instanceof返回的是一个布尔值
- instanceof 可以准确地判断复杂引用数据类型,但是不能正确判断基础数据类型
- 而 typeof 也存在弊端,它虽然可以判断基础数据类型(null 除外),但是引用数据类型中,除了 function 类型以外,其他的也无法判断
对象遍历
使用Object.keys()遍历
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
const obj = {'0':'a','1':'b','2':'c'};Object.keys(obj)Object.values(obj)// ['0', '1', '2']// ['a', 'b', 'c']
使用for..in..遍历
循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
const obj = {'0':'a','1':'b','2':'c'};for(var i in obj) {console.log(i,":",obj[i]);}// 0 : a// 1 : b// 2 : c
使用Object.keys()遍历
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
数组遍历
forEach遍历(可以同时访问数组的下标与元素值)
arr.forEach(function(item,index){//index可要可不要//item可以是对象//item.name});
for遍历(访问数组下标)
for (let i = 0; i < arr.length; ++i) {console.log(arr[i]);}
for…in…遍历(访问数组下标)
for(j in arr) {//j表示的是index}
for…of…遍历(访问元素值)
不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象。
也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历。
for(let value of arr) {//打印出来的是值});
// 可以遍历下标for (const [i, v] of arr.entries()) {console.log(i, v);}
map遍历
对于运行传入的函数,返回一个新的数组
let mapResult = numbers.map((item, index, array) => item * 2);
every遍历
every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ];console.log( arr.every( function( item, index, array ){return item > 3;}));// false
some遍历
some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ];console.log( arr.some( function( item, index, array ){return item > 3;}));// true
只有for/in不会忽略非数字属性
