es6的十大功能
翻译自Top 10 ES6 features by example
虽然ES6规范不是最近才发布,但我认为很多开发人员仍然不太熟悉。 主要原因是在规范发布之后,Web浏览器的支持可能很差。 目前,规范发布已经超过2年了,现在很多浏览器对ES6支持良好。 即使您(或您的客户)不使用最新版本的Web浏览器,也可以使用转换器(如Babel),在应用程序的构建过程中将ES6转换为ES5。 这意味着要向前迈出一步,学习ES6。
在本文中,我将尽量简单地介绍最有用的功能。 在本教程之后,您将拥有基本技能,并能够将其应用于实际项目中。 不要将其视为指南或文件。 我的目标是鼓励你深入挖掘并熟悉ES6。
const和let关键字
const使您能够定义常量(最终变量!)。 let让你定义变量。 这很棒,但是JavaScript中没有变量吗? 是有的,但是由var声明的变量具有函数范围,并被提升到顶部。 这意味着在声明之前可以使用一个变量。 让变量和常量具有块范围(由{}包围),在声明之前不能使用。
function f() { var x = 1 let y = 2 const z = 3 { var x = 100 let y = 200 const z = 300 console.log( "x in block scope is" , x) console.log( "y in block scope is" , y) console.log( "z in block scope is" , z) } console.log( "x outside of block scope is" , x) console.log( "y outside of block scope is" , y) console.log( "z outside of block scope is" , z) } f() |
运行结果如下:
x in block scope is 100 y in block scope is 200 z in block scope is 300 x outside of block scope is 100 y outside of block scope is 2 z outside of block scope is 3 |
数组辅助方法
出现了新的很酷的功能,这有助于在很多情况下使用JS Array。 您实现了多少次的逻辑,如:过滤,检查是否有任何或所有元素符合条件,或者元素转换? 是不是很多种情景下都有用过? 现在语言本身自带这些很好用的功能。 在我看来,这是最有价值的功能:
forEach
对数组的每个元素执行传入的函数,将数组元素作为参数传递。
var colors = [ "red" , "green" , "blue" ] function print(val) { console.log(val) } colors.forEach(print) |
运行结果如下:
red green blue |
map
创建一个包含相同数量元素的新数组,但是由传入的函数返回元素。 它只是将每个数组元素转换成别的东西。
var colors = [ "red" , "green" , "blue" ] function capitalize(val) { return val.toUpperCase() } var capitalizedColors = colors.map(capitalize) console.log(capitalizedColors) |
运行结果如下:
[ "RED" , "GREEN" , "BLUE" ] |
filter
创建一个包含原始数组子集的新数组。 新数组包含的这些元素通过由传入的函数实现的测试,该函数应该返回true或false。
var values = [1, 60, 34, 30, 20, 5] function lessThan20(val) { return val < 20 } var valuesLessThan20 = values.filter(lessThan20) console.log(valuesLessThan20) |
运行结果如下:
[1,5] |
find
找到通过传入的函数测试的第一个元素,该函数应该返回true或false。
var people = [ {name: "Jack" , age: 50}, {name: "Michael" , age: 9}, {name: "John" , age: 40}, {name: "Ann" , age: 19}, {name: "Elisabeth" , age: 16} ] function teenager(person) { return person.age > 10 && person.age < 20 } var firstTeenager = people.find(teenager) console.log( "First found teenager:" , firstTeenager.name) |
运行结果如下:
First found teenager: Ann |
every
检查数组的每个元素是否通过传入函数的测试,该函数应该返回true或false(每个函数都返回true,则结果为true,否则为false)。
var people = [ {name: "Jack" , age: 50}, {name: "Michael" , age: 9}, {name:
|