let
es6中通过let取代var 不建议在使用var定义变量
var是没有块级作用域的let有块级作用域
const
用const修饰必须赋值不能修改
对象的增强写法
//一般写法var name = zs;var age = 11;var obj={name: name,age : age,say :function(){}}//增强写法var name = zs;var age = 11;var obj={name, //会把name当键和name当值age ,say(){// 当对象有方法调用时还是通过属性名调用所有可以把:function去掉}}
模板字符串
var name = "abc";var age = 12;var persion ={name : name,age : age}正常拼接var i = "我的名字叫"+persion.name+" 今年"+persion.age+"岁"模板拼接var i =`我的名字${persion.name}今年${persion.age}岁`//字符串拼接不用+号连接var i =`我的名字${persion.name}今年${persion.age}岁`//模板字符串中的回车 空格会在页面显示
for循环
let arr = [1,2,3,4,5,6];for(let i in arr){//in 获取数组的索引alert(i);}for(let i of arr){//of 获取数组中的遍历 相当于Java中的增强for循环alert(i);}
js高级方法
filter方法
let arr = [1,2,3,4,5,6];let newArr = arr.filter(function(n){return true;});filter方法会自动对数组进行遍历遍历结果或通过回调函数进行接收返回结果是boolean类型 true 会把当前值加入一个新数组(最后返回值就是这个新数组) 如果有条件在 return 写false会直接过滤掉let arr = [1,2,3,4,5,6];let newArr = arr.filter(function(n){return n<3;//过滤出n<3的值 存入数组中});
map方法
let arr = [1,2,3,4,5,6];let newArr = arr.map(function(n){return n *2;});map方法会把数组进行遍历通过回调函数进行接收 返回值为当前元素 最后直接返回一个新数组可以进行对数组中元素的统一操作 比如*2
reduce方法
对数组中的所有内容进行汇总let newArr = arr.reduce(function(preValue,n){return preValue + n ;},0);第一个参数是回调函数,第二个参数是给回调函数中第一个参数(preValue)设置初始值preValue接收的是 return 返回的值 n 是遍历到的值preValue+n就是直接全部值的和(preValue初始为0第二个参数设置)
箭头函数
const a = function(){} 正常模式const a=(参数列表)=>{} 标准箭头函数const a= (a,b) => {return a+b;}有参数有返回值const a = b =>{return b} 当时一个参数是可以省略括号 没有参数得加()const a = (a,b) => return a+b; 当只有一行返回值是{}省略直接return
Promise
一般情况下是有 异步操作时使用new Promise((resolve,rejecy)=>{// resolve解决 rejecy 拒绝 本身也是函数setTimeout(() => {//比如ajax 成功 通过resolve() 成功执行在thenresolve()//通过执行resolve方法会执行then中方法的代码 当resolve方法中传入参数 then中()=>{}方法就 要通过参数接收}, 1000);//比如ajaxt 失败 通过reject() 执行 catchreject();}).then(()=>{...});简写:一般情况下是有 异步操作时使用new Promise((resolve,rejecy)=>{// resolve解决 rejecy 拒绝 本身也是函数setTimeout(() => {//比如ajax 成功 通过resolve() 成功执行在thenreturn "aaa"//通过直接返回的方式进入到then方法中 还可以通过throw "aa"直接抛出进入 到catch方法中}, 1000);}).then((aaa)=>{console.log(aaa)..});
