javascript - es6 函数写法应该怎么解读
PHPz
PHPz 2017-04-11 13:04:38
[JavaScript讨论组]
const test = (params) => {
    console.log(params);
}

现在es6这种函数的写法非常常见,不是很理解。这个东西是怎么对应到es5写法的,并且怎么调用呢?
test 和test() 有什么区别?
求解答了!!

PHPz
PHPz

学习是最好的投资!

全部回复(4)
PHPz
 var test = function(params) {
    console.log(params);
}
高洛峰

ECMAScript 6 入门
babel编译
调用区别和以前一样。
声明方式类似(仅限于看起来类似)于

var test = function(){};
PHP中文网

近似等价于

var test = function (params) {
    console.log(params);
}
PHP中文网

词法作用域 动态作用域

箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的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初始化啊)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号