ES6 新特性 ES6使用 超实用
ECMAScript 学习
ES5-数组的新方法
 forEach
 forEach方法对数组的每个元素执行一次提供的函数。功能等同于for循环.
应用场景:为一些相同的元素,绑定事件处理器!
var arr = ['张飞', '关羽', '赵云', '马超']
//第一个参数:item,数组的每一项元素
//第二个参数:index,数组的下标
//第三个参数:array,正在遍历的数组
//常用的参数就第一个和第二个,第三个参数基本上没啥用
arr.forEach(function(item, index, array) {
  console.log(item, index, array)
})
// 箭头函数写法----箭头函数说明在后面
arr.forEach((item, index, array) => {
  console.log(item, index, array)
})
// 优点 1. 不占用全局变量
// 优点 2: 结合箭头函数使用
map
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。返回的数组的长度和原数组是一样的
var arr = [1, 2, 3, 4, 5] // 1 4 9 16 25
//第一个参数:element,数组的每一项元素
//第二个参数:index,数组的下标
//第三个参数:array,正在遍历的数组
//返回值:一个新数组,每个元素都是回调函数的结果。
var newArray = arr.map(function(element, index, array) {
  return element * element
})
console.log(newArray) //[1,4,9,16,25]
// 箭头函数写法
var newArray = arr.map(element => element * element)
filter
filter用于过滤掉“不合格”的元素
 返回一个新数组,如果在回调函数中返回 true,那么就留下来,如果返回 false,就扔掉,因此返回的数组的长度和原数组的长度不一定一致
var arr = [1000, 5000, 20000, 3000, 10000, 800, 1500]
//第一个参数:element,数组的每一项元素
//第二个参数:index,数组的下标
//第三个参数:array,正在遍历的数组
//返回值:一个新数组,存储了所有返回true的元素
var newArray = arr.filter(function(element, index, array) {
  if (element > 5000) {
    return false
  } else {
    return true
  }
})
console.log(newArray) //[1000, 5000, 3000, 800, 1500]
// 箭头函数写法
var newArray = arr.filter(element => element > 5000)
some
some用于遍历数组,如果有至少一个满足条件,就返回 true,否则返回 false。同样的每一个元素都会执行一遍 function,相当于最后返回的结果进行了一个 ||运算,全为 false 才是 false
var arr = [2, 4, 6, 8, 10, 21] // 判断数组是否包含奇数
//第一个参数:element,数组的每一项元素
//第二个参数:index,数组的下标
//第三个参数:array,正在遍历的数组
//返回值:布尔类型的值,只要有一个回调函数返回true,就返回true
var flag = arr.some(function(element, index, array) {
  console.log(element, index, array)
  if (element % 2 == 1) {
    return true
  } else {
    return false
  }
})
console.log(flag) //true
// 箭头函数写法
var flag = arr.some(element => element % 2 == 1)
every
every用于遍历数组,只有当所有的元素返回 true,才返回 true,否则返回 false,每个元素执行完 function 返回的结果做一个 && 运算,全为 true 结果才是 true
var arr = [2, 4, 6, 8, 10, 21] //判断数组是否都是偶数
//第一个参数:element,数组的每一项元素
//第二个参数:index,数组的下标
//第三个参数:array,正在遍历的数组
//返回值:布尔类型的值,只有当所有的元素返回true,才返回true,否则返回false。
var flag = arr.every(function(element, index, array) {
  console.log(element, index, array)
  if (element % 2 == 0) {
    return true
  } else {
    return false
  }
})
console.log(flag) //false
// 箭头函数写法
var flag = arr.some(element => element % 2 == 0)
forEach: 作用:只会让每个元素执行一次函数, 没有别的功能 for 循环
 map: 作用:返回一个新的数组,长度和原数组一样 新数组会保存每次 function 返回的值
 filter: 作用:得到一个新数组, 保留哪些满足条件(返回 true)
 some: 作用:得到布尔值 只要有函数返回 true,整体结果就是 true
 every: 作用:得到布尔值,要所有的函数都返回 true,结果就是 true
ES6 常用点
变量声明
 ES6 中提供了两个声明变量的关键字:const 和 let
注意:
 在ES5中var function 声明的全局变量都是顶级对象(window)的属性,而ES6中声明的全局变量不属于顶级对象的属性
var age = 18
console.log(this.age)  // 18
let age = 18
console.log(this.age)  // undefined
let 使用
ES6 新增了let命令,用来声明变量。它的用法类似于var。
 let 声明的变量只有在当前作用域有效
 不存在变量提升
 不允许重复声明
 块级作用域
{
  let a = 10
  var b = 1
}
a // ReferenceError: a is not defined.
b // 1
// let 的情况
console.log(bar) // 报错ReferenceError
let bar = 2
let a = 10
let a = 1 //报错 Identifier 'a' has already been declared
for循环的计数器,就很合适使用let命令。
for (let i = 0; i < 10; i++) {
  // ...
}
console.log(i)
// ReferenceError: i is not defined
上面代码中,计数器i只在for循环体内有效,在循环体外引用就会报错。
下面的代码如果使用var,最后输出的是10。
var a = []
for (var i = 0; i < 10; i++) {
  a[i] = function() {
    console.log(i)
  }
}
a[6]() // 10
ES6 新特性 ES6使用 超实用的更多相关文章
- 前端入门21-JavaScript的ES6新特性
		声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ... 
- ES6新特性概览
		本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ... 
- ES6新特性之模板字符串
		ES6新特性概览 http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串 http://www.infoq.c ... 
- Atitit js版本es5 es6新特性
		Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ... 
- ES6新特性:Proxy代理器
		ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ... 
- ES6新特性(函数默认参数,箭头函数)
		ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ... 
- ES6新特性简介
		ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ... 
- 轻松学会ES6新特性之生成器
		生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ... 
- 必须掌握的ES6新特性
		ES6(ECMAScript2015)的出现,让前端开发者收到一份惊喜,它简洁的新语法.强大的新特性,带给我们更便捷和顺畅的编码体验,赞! 以下是ES6排名前十的最佳特性列表(排名不分先后): 1.D ... 
- 你不知道的JavaScript--Item24  ES6新特性概览
		ES6新特性概览 本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代 ... 
随机推荐
- mac 命令整理
			查看clang++搜索路径 clang++ -E -x c++ - -v < /dev/null 
- psgl
			/* Navicat Premium Data Transfer Source Server : postgreSQL Source Server Type : PostgreSQL Source S ... 
- 073_SFDC Limit
			我们在开发的过程中,应多注意一些系统自身的限制,以及遇到此类问题的应对措施: Description Synchronous Limit Asynchronous Limit Total number ... 
- BGP知识点总结(一)
			动态路由协议(工作范围) 1.自治系统内部的路由协议-IGP:工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换(ospf,rip,isis) 2.自治系统之间的路由协 ... 
- C#封装FluentValidation
			FluentValidation是一个非常强大的用于构建强类型验证规则的 .NET 框架,帮程序员解决了繁琐的校验问题,用起来非常爽,但我还是遇到了一件非常不爽的事情,如下代码所示: public c ... 
- 插入排序C语言
			1 #include "stdio.h" 2 #include "stdlib.h" 3 typedef int ElemType; 4 //直接插入排序 5 ... 
- Linux 第五节 (shell脚本while循环,case,计划任务,用户及权限)
			#!/bin/bash #this is a test script PRICE=$(expr $RANDOM % 1000) //将随机得出的数字取余 TIMES=0 while true do ... 
- python中如果获取对象的内存地址,及字典的地址
			在python中,如果查看一个对象的内存地址,可以用到id这个内置函数:使用方式是: id(object)--->返回该对象的10进制的内存地址: 以下是官方定义:翻译为大白话就是,返回一个对象 ... 
- 安装kubernetes dashboard以及用户授权
			kubernetes 版本v1.25.3 1.安装 版本查看:https://github.com/kubernetes/dashboard/releases kubectl apply -f htt ... 
- iOS数据持久化 - CoreData
			前言 1 - CoreData 是苹果公司封装的进行数据持久化的框架,首次在 iOS 3.0 版本系统中出现,它允许按照实体-属性-值模型组织数据,并以 XML.二进制文件或者 SQLite 数据文件 ... 
