数组循环
- forEach
- map
- some
- every
- reduce
var arr=['zhangsan','lisi','wangwu'];
arr.forEach(function(item,key,arr){
console.log(item,key,arr);
})
```javascript //every && some :|| var arr = [false,false,ture,ture]; var res = arr.every(function(item,key,arr){ console.log(item,key,arr) returen item; }) console.log(res)var arr =['zhangsan','lisi','wangwu'];
var res=arr.map(function(item,key,arr){
return item;
})
var res = arr.some(function(item,key,arr){ console.log(item,key,arr) return item })
```javascript
//数字累加
var arr = [1,2,3,4];
var res = arr.reduce(function(pre,current,index){
console.log(pre,current,index)
return pre+current;
//pre是上次累加结果,current是当前循环的值
},0)//从零开始累加
//数组累加
var arr = [1,2,3,4];
var res = arr.reduce(function(pre,current){
pre.push(current+10);
returen pre;
},[]);
console.log(res);
//对象累加
var arr = [1,2,3,4];
var res = arr.reduce(function(pre,current){
pre[current]=1;
return pre;
},{})
//{1:1,2:1,3:1,4:1}
console.log(res)
//数组去重
var arr = [1,2,1,3,4,5,3,3,5,6,7];
var res = arr.reduce(function(pre,current){
//pre[current]=1;
//{a:1,b:1,c:1}
//核心:判断current:abc存不存在?不存在初始化一个a:1
//存在 在以前的基础上 加1 a:1 ++ --->a:2
type pre[current]==='undefined'?pre[current]=1:pre[current]++;
returen pre;
},{});
console.log(res);
严格模式
- 语法比普通js环境更严格的一种模式
- ‘use strict’ 开启严格模式
- 声明必须有var关键字
- 形参不可重复
-
let和var的区别
let允许声明一个在作用域限制在块级中的变量,语句或表达式
- var声明的变量只能是全局或者整个函数块的
- let不能重复声明
-
const常量
常量不能重新赋值
- 初始化的时候不能不被赋值
- 不能重复声明
- 块级作用域
- 不会被预解析
解构赋值
```javascript //数组解构赋值 let arr = [‘zhangsan’,’lisi’,’wangwu’]; let [a,b,c]=arr; console.log(a,b,c) //zhangsan lisi wangwu
//对象的解构 let obj ={ name:’zhangsan’, age:20, height:’188cm’ } let {name:name,age:age,height:height}=obj; //直接把对象的键名和键值设置成一个 let{name,age,height}=obj; console.log(name,age,height) //zhangsan 20 188cm //ES6对象中,键名跟键值一样,那么可以简写 let name =’zhangsan’; let age=30; let obj={ name, age } console.log(obj); //zhangsan 30 ```