1、ES6中允许使用箭头定义函数

  1. <script>
  2. function fn1_es5(){};
  3. var fn1_es6 = () => {};
  4. function fn2_es5(x){return x;};
  5. var fn2_es6 = (x) => x;
  6. function fn3_es5(x,y){return x+y;};
  7. var fn2_es6 = (x,y) => x+y;
  8. function fn3_es5(x,y){
  9. let z = 10;
  10. return x+y+z;
  11. };
  12. var fn3_es6 = (x,y) => {
  13. let z = 10;
  14. return x+y+z;
  15. };
  16. function fn4_es5(x,y){
  17. return {x,y};
  18. }
  19. var fn4_es6 = (x,y) => ({x,y})
  20. console.log(fn2_es6(1,2));
  21. console.log(fn4_es6(1,2));
  22. console.log(fn4_es6(1,2).x);
  23. </script>

2、箭头函数的作用

1、简化代码
2、简化回调函数

  1. <script>
  2. var arrays = [10,20,30];
  3. arrays.map(item =>{
  4. console.log(item);
  5. });
  6. arrays.map((item,index) =>{
  7. console.log(item,index);
  8. });
  9. </script>

3、关于箭头函数的this

对于普通函数来说,this是指向函数运行时所在的对象,但在箭头函数中却不是,它是指向定义时上层作用域中的this,如下代码:

  1. <script>
  2. var name = "azhi";
  3. var user = {
  4. name:"lz",
  5. getName(){
  6. // 对于普通函数里的this,它指向的就是运行时所在的对象,即user
  7. console.log("getName方法:"+this.name); //打印输出lz
  8. },
  9. getName1(){
  10. setTimeout(function(){
  11. // 对于setTimeout里的this,默认是指向window
  12. console.log("getName1方法:"+this.name); //打印输出azhi
  13. });
  14. },
  15. getName2(){
  16. setTimeout(() => {
  17. // =>函数里的this是指向定义时上层作用域中的this,也就是user中的this
  18. console.log("getName2方法:"+this.name); //打印输出lz
  19. });
  20. },
  21. };
  22. user.getName();
  23. user.getName1();
  24. user.getName2();
  25. </script>