箭头函数也叫lambda表达式

据说其主要意图是定义轻量级的内联回调函数

栗有:

1 var arr = ["wei","ze","yang"];
2 arr.map(item=>"Mr."+item); // ["Mr.wei", "Mr.ze", "Mr.yang"]

实则

1 var arr = ["wei","ze","yang"];
2 arr.map(function(item){
3 return "Mr."+item;
4 });

1.注意点:

(1)当箭头函数有一个参数的时候,参数可以不加括号,没有参数的时候就必须要加。

定义 函数名 = 参数 => 函数体

1 var student = name => "my name is " + name;
2 console.log(student("wei ze yang"));
3 // my name is wei ze yang

(2)如果函数体不止一行,应该用花括号括起来,这时就要显示地返回。

定义 函数名 = (参数,参数) => {

  函数体;

  return 返回值;    

}

1 var student = (name,age) => {
2 age +=1;
3 return "name:" + name + ",age:" + age;
4 }
5 console.log(student("wei ze yang",21));
6 // name:wei ze yang,age:22

2.arguments object

正常的函数内:

1 function student(name,age){
2 console.log(arguments[0]);
3 }
4
5 student("weizeyang",22);

但箭头函数不会暴露argument对象

1 var student = (name,age) => {
2 console.log(arguments[0]);
3 }
4
5 student("weizeyang"); // arguments is not defined

所以,argument将简单地指向当前作用域内的一个变量

1 var arguments = ["Mr.wei"];
2
3 var student = (name,age) => {
4 console.log(arguments[0]);
5 }
6
7 student("weizeyang"); // "Mr.wei"

或者这时可以使用“剩余参数”的时候代替

1 var arguments = ["Mr.wei"];
2
3 var student = (...arguments) => {
4 console.log(arguments[2]);
5 }
6
7 student("weizeyang",22,true); // true

3.绑定this的值

箭头函数是lexically scoped(词法作用域),这意味着其this绑定到了附近scope的上下文。

也就是说,不管this指向什么,都可以用一个箭头函数保存。

 1 var student = {
2 names:["wei","ze","yang"],
3 setName: function() {
4 console.log(this);
5 this.name = this.names.join("")
6 },
7 getName: function() {
8 console.log(this);
9 return () => {
10 return {
11 myName : "my name is " + this.name
12 }
13 }
14 }
15 }
16
17 student.setName();
18 var student1 = student.getName();
19 console.log(student1().myName);
20 // my name is weizeyang

有图为证,看下

4.相关文档

http://blog.csdn.net/cuit/article/details/53200335

https://zhuanlan.zhihu.com/p/24856798

使用 this.$refs 来获取元素和组件

  1.  
    <div id="app">
  2.  
    <div>
  3.  
    <input type="button" value="获取元素内容" @click="getElement" />
  4.  
    <!-- 使用 ref 获取元素 -->
  5.  
    <h1 ref="myh1">这是一个大大的H1</h1>
  6.  
     
  7.  
    <hr>
  8.  
    <!-- 使用 ref 获取子组件 -->
  9.  
    <my-com ref="mycom"></my-com>
  10.  
    </div>
  11.  
    </div>
  12.  
     
  13.  
    <script>
  14.  
    Vue.component('my-com', {
  15.  
    template: '<h5>这是一个子组件</h5>',
  16.  
    data() {
  17.  
    return {
  18.  
    name: '子组件'
  19.  
    }
  20.  
    }
  21.  
    });
  22.  
     
  23.  
    // 创建 Vue 实例,得到 ViewModel
  24.  
    var vm = new Vue({
  25.  
    el: '#app',
  26.  
    data: {},
  27.  
    methods: {
  28.  
    getElement() {
  29.  
    // 通过 this.$refs 来获取元素
  30.  
    console.log(this.$refs.myh1.innerText);
  31.  
    // 通过 this.$refs 来获取组件
  32.  
    console.log(this.$refs.mycom.name);
  33.  
    }
  34.  
    }
  35.  
    });
  36.  

JavaScript箭头函数(Lambda表达式)的更多相关文章

  1. 轻松学习 JavaScript——第 6 部分:JavaScript 箭头函数

    JavaScript箭头函数是ECMAScript 6中引入的编写函数表达式的一种简便方法.通常,在JavaScript中,可以通过两种方式创建函数: 函数语句. 函数表达式. 可以如下所示创建函数语 ...

  2. 动态导航栏和JavaScript箭头函数

    动态导航栏和JavaScript箭头函数 今天我们来写一下动态的导航栏,并且学一下JavaScript的箭头函数等相关问题. 样式如下所示: html中执行代码如下所示: <!DOCTYPE h ...

  3. 函数:lambda表达式 - 零基础入门学习Python021

    函数:lambda表达式 让编程改变世界 Change the world by program lambda表达式 Python允许使用lambda关键字来创建匿名函数.我们提到一个新的关键字:匿名 ...

  4. JavaScript箭头函数中的this详解

    前言 箭头函数极大地简化了this的取值规则. 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () { console.log(" ...

  5. 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式

    [学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  6. JavaScript 箭头函数(Lambda表达式)

    Lambda表达式(箭头函数)用于表示一个函数,所以它和函数一样,也拥有参数.返回值.函数体,但它没有函数名,所以Lambda表达式相当于一个匿名函数. 使用方法: ()=>{} 小括号里放参数 ...

  7. JavaScript箭头函数 和 generator

    箭头函数: 用箭头定义函数........           var fun = x=>x*x alert(fun(2))            //单参数   var fun1 = ()=& ...

  8. 匿名函数 lambda表达式(lambda expression)

    阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call =  [this, log_directory]() {return pimpl_->backgroundChang ...

  9. 函数, lambda表达式

    函数 函数:简单的理解,就是一次执行很多行代码 函数的返回值 函数的参数,和变量没区别 例: def hello(): print "hello world" hello() he ...

随机推荐

  1. 每日一题-——LeetCode(807)保持城市天际线

    题目描述: 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被认为是建筑物.最后,从新数组的所有 ...

  2. rabbitmq数据备份与还原

    一.场景 现在有服务器A和服务器B ,由于业务需要,要求把服务器A上mq的数据迁移到服务器B上,rabbitmq的数据包括元数据(RabbitMQ用户.vhost.队列.交换和绑定)和消息数据,而消息 ...

  3. SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问

    [转]https://www.jianshu.com/p/8d4aba3b972d 推荐使用nginx配置https,因本文产生的任何问题不再做回复. 这里说一下为什么写这篇文章,因为我也是一个Spr ...

  4. Codeforces Round #609 (Div. 2) C. Long Beautiful Integer

    链接: https://codeforces.com/contest/1269/problem/C 题意: You are given an integer x of n digits a1,a2,- ...

  5. python-Redis cluster基础指标监控

    #!/usr/local/python/shims/python from rediscluster import StrictRedisCluster ''' 需要在宿主机python中安装redi ...

  6. AfxBeginThread深入解析

    看过<深入浅出MFC>书中,j.j.hou提到在创建新的线程时,最好不要直接使用CreateThread,虽然AfxBeginThread也是对CreateThread的封装,但是AfxB ...

  7. 进程间的通信----队列queue

    import multiprocessing def download_from_web(q): """下载数据""" # 模拟下载数据 d ...

  8. Ubuntu 16.04安装Docker-Compose 与 Can't connect to docker from docker-compose

    根据别的 网址做一个记录 :  https://www.linuxidc.com/Linux/2017-01/139574.htm Linux环境 Ubuntu 16.04(LTS)curl安装安装 ...

  9. Centos命令和Shell脚本问题集合

    1.cat 错误写法 cat >> somefile.txt << EOF something EOF 原因:EOF 之后一定要是 ENTER(回车) 不能是空格或者其他.EO ...

  10. LOJ P10150 括号配对 题解

    Analysis 区间dp裸题 初始化有点麻烦 i,j能匹配时要特判 #include<iostream> #include<cstdio> #include<cstri ...