扫码关注官方订阅号
const test = (params) => { console.log(params); }
现在es6这种函数的写法非常常见,不是很理解。这个东西是怎么对应到es5写法的,并且怎么调用呢?test 和test() 有什么区别?求解答了!!
学习是最好的投资!
var test = function(params) { console.log(params); }
ECMAScript 6 入门babel编译调用区别和以前一样。声明方式类似(仅限于看起来类似)于
var test = function(){};
近似等价于
var test = function (params) { console.log(params); }
箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。
var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象 return fn(); } }; obj.getAge(); // 25
词法作用域(lexical scope)等同于静态作用域(static scope)。所谓的词法作用域其实是指作用域在词法解析阶段既确定了,不会改变。
箭头函数就是个简写形式的函数表达式,并且它拥有词法作用域的this值(即不会新产生自己作用域下的this, arguments, super 和 new.target 等对象)。此外,箭头函数总是匿名的。
箭头函数则会捕获其所在上下文的 this 值,作为自己的 this 值,因此下面的代码将如期运行。
使用 new 操作符 (箭头函数不能用作构造器,和 new 一起用就会抛出错误。)
箭头函数,就是没有自身this属性的函数。直接在它的静态作用域找最近的函数的this.非严格模式,函数this初始化为window/global;严格模式,函数初始化为undefined.(当然,普通函数this有绑定(指向引用)时,内部的箭头函数this指向便是此引用)
我想说啥,其实是 箭头函数只会沿着它的作用链找到最近的普通函数为止。(因为有this初始化啊)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
ECMAScript 6 入门
babel编译
调用区别和以前一样。
声明方式类似(仅限于看起来类似)于
近似等价于
词法作用域 动态作用域
箭头函数
箭头函数就是个简写形式的函数表达式,并且它拥有词法作用域的this值(即不会新产生自己作用域下的this, arguments, super 和 new.target 等对象)。此外,箭头函数总是匿名的。
箭头函数则会捕获其所在上下文的 this 值,作为自己的 this 值,因此下面的代码将如期运行。
使用 new 操作符 (箭头函数不能用作构造器,和 new 一起用就会抛出错误。)
箭头函数,就是没有自身this属性的函数。直接在它的静态作用域找最近的函数的this.
非严格模式,函数this初始化为window/global;严格模式,函数初始化为undefined.(当然,普通函数this有绑定(指向引用)时,内部的箭头函数this指向便是此引用)