4月24日笔记
箭头函数 => ES6的匿名函数的写法 => 非常重要**
// function fn() {
// console.log('普通函数')
// }
`// 匿名函数`
`// const fn = function() {`
`// console.log('匿名函数')`
`// }`
`// 箭头函数 (删掉function, 再()和{}直接添加 =>)`
`// const fn = () => {`
`// console.log('匿名函数')`
// }*
`// 只有一个参数`
`// const fn = function(x) {`
`// console.log('x', x);`
`// }`
// 只有一个参数, 可以把()取消掉
// const fn = x => {
// console.log('x', x);
// }
// 只有一个return 语句
// const fn = x => {
// return x * 2
// }
// 只有一个return 语句. (一眼看穿入参和出参)
// const fn = x => x * 2;
// 如果只return一个对象.
// const show = function() {
// return { name: 9000 }
// }
// 这个对象省略了return后, 会有歧义. (到底是对象的{}还是函数的{})
// 如果真要返回一个对象, 省略了()后, 需要用()把对象扩起来.
// const show = () => ({ name: 9000 });
回调函数都应该写成箭头函数
数组的遍历有很多方法.
// 用forEach方法遍历, 代替for循环遍历.
// forEach的参数是一个回调函数.
// 回调函数的参数有3个.
// item就是当前循环的元素,
// i就是当前循环元素的下标.
// arr就是当前循环的数组
// forEach方法, 返回undefined.
// arr.forEach(function(item, i, arr) {
// console.log('arr', arr[i]);
// });
// arr.forEach((item, i, arr) => {
// console.log('arr', arr[i]);
// });
map方法返回一个新数组. => 它用来生成新数组 => 通过旧数组的元素,经过加工后,生成新数组.
// map的回调函数的return 后写什么? => 新数组的元素 => 新数组的元素要什么,就return什么
let newArr = arr.map((item, i) => item + 1);
const arr = [1, 2, 3, 4, 5];
// filter => 用于过滤 => 从原数组内过滤出满足指定条件的元素,组成新数组.
// filter => 返回一个新数组
// filter回调函数的参数, 和forEach以及map是一样的
// filter的回调函数也要写return => 写指定的条件
// 什么时候用map,什么时候用filter?
// map新数组的length和原数组一致.
// filter新数组的length一般比原数组小.
// const newArr = arr.filter((item, i) => item % 2 === 0);
// 直接return true, 意思就是把数组内的所有元素都过滤放入新数组.
// const newArr = arr.filter((item, i) => true);
// 直接return false, 意思就是把元组内的所有元素都不过滤放入新数组. 新数组是空的
const newArr = arr.filter((item, i) => false);
// every => 用来做判断, 返回布尔值 => 判断是否所有的元素都满足指定条件
// 但凡有一个元素不满足指定条件, every返回false.
let arr = [1, 43, 5, 9, 7];
// every的回调函数的参数,和map,filter一致.
// 回调函数要写return , return 指定的条件.
let flag = arr.every(item => item % 2 !== 0);
if (flag) {
alert('都是奇数');
} else {
alert('不都是奇数');
}
// some => 返回布尔值,用来做判断 => 判断所有元素里,是否有元素满足指定条件
// 有一个满足, 返回true, 都不满足, 返回false.
const arr = [1, 5, 3, 9];
// some的回调函数的参数,和map,filter一致.
// 回调函数要写return , return 指定的条件.
let flag = arr.some(item => item % 2 === 0);
if (flag) {
alert('有偶数');
} else {
alert('没偶数');
}
伪数组 => 不是真正的数组, 但是可以使用下标和length.
// 我们学过的返回数组的获取标签的方法,返回的都是伪数组.
// 伪数组都不能使用数组的方法.
// arguments也是伪数组.rest参数是真正的数组.
// aDiv是伪数组, 不是真正的数组.任何数组的方法,aDiv都不能使用.
// 如果让伪数组可以使用数组的方法, 需要把伪数组转换为真正的数组
// 1: [...伪数组]
// 2: Array.from(伪数组)
// [...aDiv].forEach(item => {
// item.style.backgroundColor = 'red';
// });
// Array.from(aDiv).forEach(item => {
// item.style.backgroundColor = 'red';
// });