JavaScript ES6 Arrow Functions(箭头函数)
2018-06-24 01:25:40来源:未知 阅读 ()
1. 介绍
第一眼看到ES6新增加的 arrow function 时,感觉非常像 lambda 表达式。
那么arrow function是干什么的呢?可以看作为匿名函数的简写方式。
如:
var addition = function(a, b) { return a + b }; // 等同 var addition = (a, b) => { return a + b };
2. 语法
arrow functions(箭头函数)主要有以下4种语法:
// 1)基本 (param1, param2, paramN) => { expression } (param1, param2, paramN) => { return expression } // 2)只有一个参数时,括号是可选的 (singleParam) => { expression } singleParam => { expression } // 3)不带参数时,在参数区域带有括号 () => { expression } // 4)函数主体若不带{}大括号,表示直接返回函数主体 (param1, param2, paramN) => { return expression } (param1, param2, paramN) => expression // 等同于上面
3. 特性
3.1 没有自身this
arrow function没有自身的this,即在arrow function内部使用this时,此this指向创建此函数时的外部this。
场景:在Web开发时都会用到ajax的回调,回调函数内的this常常用外部创建的self、that、_this等变量暂存,而当回调函数采用arrow function方式时就可以直接使用外部的this。
示例:
var ajax = function(url, successCallback) { // TODO ajax successCallback && successCallback(); }; var productBLL = { productName: '瓜子', query: function() { // arrow function ajax('query', () => { console.log(this); // => productBLL console.log(this.productName); // => 瓜子(productBLL.productName) }); } }; productBLL.query();
3.2 call()、apply() 调用无法改变this
就像上面讲的arrow function没有自身的this,当用call()或apply() 调用箭头函数时无法改变函数主体内的this。
示例:
// 普通函数 var sayHello = function(userName) { console.log('hi ' + userName); console.log(this); }; sayHello.call({ x: 1 }, 'polk'); // => this == { x: 1 } // 箭头函数 var sayHello2 = (userName) => { console.log('hi ' + userName); console.log(this); }; sayHello2.call({ y: 2 }, 'polk'); // => this == window
3.3 没有arguments
使用arrow function创建的函数,自身是没有arguments成员。
var sayHello = (userName) => { console.log('hi ' + userName); console.log(arguments); // => Uncaught ReferenceError: arguments is not defined };
3.4 arrow function作为某个对象的方法成员时,this指向非此对象
当某个对象的方法为arrow function时,那么此方法内的this指向并非是此对象。
示例:
var productBLL = { productName: '瓜子', sayName: function() { console.log(this.productName); }, sayName2: () => { console.log(this.productName); } }; productBLL.sayName(); // => 瓜子 productBLL.sayName2(); // => undefined, this == window
4.扩展阅读
arrow function MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- javascript面向对象入门基础详细介绍 2020-03-29
- JavaScript函数表达式详解及实例 2020-03-25
- 如何用javascript连接access数据库 2020-03-20
- js中去掉字串左右空格 2020-03-20
- Javascript中的经典技巧 2020-03-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash