javaScript深入理解

93 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

JS的数据类型的转换

  • 转换为布尔值(调用Boolean()方法)
  • 转换为数字(调用Number()、parseInt()和parseFloat()方法)
  • 转换为字符串(调用.toString()或String()方法)

JS中数据类型的判断

  • typeof 除了函数都会被解析为对象,所以不能准确的判断类型
console.log(typeof []); // object
console.log(typeof function(){}); // function 
console.log(typeof {}); // object
  • instanceof 通过判断对象的原型链能不能找到类型的prototype
console.log([] instanceof Array); // true 
console.log(function(){} instanceof Function); // true 
console.log({} instanceof Object); // true
  • constructor
console.log(([]).constructor === Array); // true console.log((function() {}).constructor === Function); // true console.log(({}).constructor === Object); // true
  • Object.prototype.toString.call()
console.log(Object.prototype.toString.call([])); 
console.log(Object.prototype.toString.call(function(){})); 
console.log(Object.prototype.toString.call({}));

undefined与Null

undefined:声明了一个变量,但未对其初始化时,这个变量的值就是undefined null:表示一个空对象指针,指示变量未指向任何对象

console.log(null == undefined); // true

数组遍历

every()

对数组中的每一项都运行给定函数,该函数对于每一项都返回true,则返回true。适用于判断数组中的项是否都满足某个条件。该方法的返回值为Boolean。

var numbers = [1,2,3,4,5,6,7,8,9];

// 判断数组项否都小于10
var everyResult = numbers.every(function(item , index , array){
    retrun item < 10;
});

console.log(everyResult); // true

some()

对数组中的每一项运行给定函数,如果该函数汇中某一项返回true,则返回true,该方法的返回值为Boolean。

var numbers = [1,2,3,4,5,6,7,8,9];

// 判断数组中是否有小于10的项
var someResult = numbers.some(function(item , index , array){
    retrun item < 10;
});

console.log(someResult); // true

filter()

对数组中的每一项运行给定函数,对数组的过滤,得到数组中满足特定条件的项。该方法会返回一个包含符合条件项的数组。

var numbers = [1,2,3,4,5,6,7,8,9];

// 返回数组中大于5的项
var filterResult = numbers.filter(function(item , index , array){
    retrun item > 5;
});

console.log(filterResult); // [6,7,8,9]

map()

对数组的每一项运行给定函数,返回每次函数调用的结果的数组。使用在需要对数组中的每个元素进行操作的时候。该方法会返回一个对数组每项进行操作后的数组。

var numbers = [1,2,3,4,5,6,7,8,9];

// 对数组中的每一项的乘2
var mapResult = numbers.map(function(item , index , array){
    retrun item * 2;
});

console.log(mapResult); // [2,4,6,8,10,12,14,16,18]

forEach()

对数组中的每一项运行给定函数。和for循环迭代数组一样。没有返回值。

var numbers = [1,2,3,4,5,6,7,8,9];

numbers.forEach(function(item , index , array){
    // ...
});