JavaScript箭头函数(Lambda表达式)
箭头函数也叫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 来获取元素和组件
- <div id="app">
- <div>
- <input type="button" value="获取元素内容" @click="getElement" />
- <!-- 使用 ref 获取元素 -->
- <h1 ref="myh1">这是一个大大的H1</h1>
- <hr>
- <!-- 使用 ref 获取子组件 -->
- <my-com ref="mycom"></my-com>
- </div>
- </div>
- <script>
- Vue.component('my-com', {
- template: '<h5>这是一个子组件</h5>',
- data() {
- return {
- name: '子组件'
- }
- }
- });
- // 创建 Vue 实例,得到 ViewModel
- var vm = new Vue({
- el: '#app',
- data: {},
- methods: {
- getElement() {
- // 通过 this.$refs 来获取元素
- console.log(this.$refs.myh1.innerText);
- // 通过 this.$refs 来获取组件
- console.log(this.$refs.mycom.name);
- }
- }
- });
JavaScript箭头函数(Lambda表达式)的更多相关文章
- 轻松学习 JavaScript——第 6 部分:JavaScript 箭头函数
JavaScript箭头函数是ECMAScript 6中引入的编写函数表达式的一种简便方法.通常,在JavaScript中,可以通过两种方式创建函数: 函数语句. 函数表达式. 可以如下所示创建函数语 ...
- 动态导航栏和JavaScript箭头函数
动态导航栏和JavaScript箭头函数 今天我们来写一下动态的导航栏,并且学一下JavaScript的箭头函数等相关问题. 样式如下所示: html中执行代码如下所示: <!DOCTYPE h ...
- 函数:lambda表达式 - 零基础入门学习Python021
函数:lambda表达式 让编程改变世界 Change the world by program lambda表达式 Python允许使用lambda关键字来创建匿名函数.我们提到一个新的关键字:匿名 ...
- JavaScript箭头函数中的this详解
前言 箭头函数极大地简化了this的取值规则. 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () { console.log(" ...
- 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式
[学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...
- JavaScript 箭头函数(Lambda表达式)
Lambda表达式(箭头函数)用于表示一个函数,所以它和函数一样,也拥有参数.返回值.函数体,但它没有函数名,所以Lambda表达式相当于一个匿名函数. 使用方法: ()=>{} 小括号里放参数 ...
- JavaScript箭头函数 和 generator
箭头函数: 用箭头定义函数........ var fun = x=>x*x alert(fun(2)) //单参数 var fun1 = ()=& ...
- 匿名函数 lambda表达式(lambda expression)
阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call = [this, log_directory]() {return pimpl_->backgroundChang ...
- 函数, lambda表达式
函数 函数:简单的理解,就是一次执行很多行代码 函数的返回值 函数的参数,和变量没区别 例: def hello(): print "hello world" hello() he ...
随机推荐
- mysql查询某一列的数据最大字节
语法:select 列名, length(列名) from 表名where length(列名) = ( select max(length(列名)) from 表名); 实例:select proj ...
- 使用Topshelf创建Windows服务[转载]
概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...
- Codeforces Round #609 (Div. 2) D. Domino for Young
链接: https://codeforces.com/contest/1269/problem/D 题意: You are given a Young diagram. Given diagram i ...
- subline html5的快捷键
选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数 ...
- 【xsy1103】随机数表(RanMat)矩阵快速幂
题目大意:你生成了一个随机数表,生成机制是这样子的: $a[i]=A1a[i-1]+A2(2≤i≤m)$ $b[i]=B1b[i-1]+B2(2≤i≤m)$ $M[1][y]=a[y]%P,(1≤y≤ ...
- celery指定任务执行时间
有业务线提出需求:要求对于其流量,只能在0点到7点扫描. 对此,celery发送任务到队列时可以指定执行的时间. 当worker收到任务后,判断还未到执行时间,会存储在worker中,在到达时候后再执 ...
- LOJ 103子串查找——用hash代替kmp算法
题意 给出两个字符串 $s_1,s_2$,求 $s_2$ 在 $s_1$ 中出现的次数. 分析 预处理出两个字符串的哈希值,再逐位比较. 时间复杂度为 $O(n+m)$,和 $kmp$ 算法一样. 可 ...
- 064_将 Linux 系统中 UID 大于等于 1000 的普通用户都删除
#!/bin/bash#先用 awk 提取所有 uid 大于等于 1000 的普通用户名称#再使用 for 循环逐个将每个用户删除即可 user=$(awk -F: '$3>=1000{prin ...
- asp.net文件上传下载组件
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- vue 组件的通信方式(完整版)
几种通信方式无外乎以下几种: Prop(常用) $emit (组件封装用的较多) .sync语法糖 (较少) $attrs & $listeners (组件封装用的较多) provide &a ...