【问题标题】:What does "=>" mean in javascript when used with export default? [duplicate]与导出默认值一起使用时,“=>”在 javascript 中是什么意思? [复制]
【发布时间】:2015-12-13 14:33:12
【问题描述】:

我正在分析 angular-file-upload 插件的一些 Angular js 源代码,但我在试图理解一些代码时遇到了一些问题。

我知道export 是新 ES6 标准的一部分,它用于从给定文件(或模块)导出函数和对象。

但是下面的语法让我有点奇怪:

let {
    copy,
    extend,
    forEach,
    isObject,
    isNumber,
    isDefined,
    isArray,
    element
    } = angular;


    export default (fileUploaderOptions, $rootScope, $http, $window, 
                      FileLikeObject, FileItem) => {


        let {
            File,
            FormData
            } = $window;


        class FileUploader { 

          // class implemention.... 
        }

        return FileUploader;
    }

这个语句中=>操作符有什么用?

【问题讨论】:

  • 其实也搞不明白运营商的名字,我研究了一下……
  • 嗯,它不是运算符,只是语法的一部分...
  • 是的,明白了.. 无论如何感谢您的帮助..

标签: javascript angularjs ecmascript-6


【解决方案1】:

它是ES6 arrow function。在您的情况下,它类似于:

"use strict";

Object.defineProperty(exports, "__esModule", {
    value: true
});

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var _angular = angular;
var copy = _angular.copy;
var extend = _angular.extend;
var forEach = _angular.forEach;
var isObject = _angular.isObject;
var isNumber = _angular.isNumber;
var isDefined = _angular.isDefined;
var isArray = _angular.isArray;
var element = _angular.element;

exports["default"] = function (fileUploaderOptions, $rootScope, $http, $window, FileLikeObject, FileItem) {
    var File = $window.File;
    var FormData = $window.FormData;

    var FileUploader = function FileUploader() {
        _classCallCheck(this, FileUploader);
    };

    // class implemention....

    return FileUploader;
};

module.exports = exports["default"];

请注意,这是由Babel编译的。

【讨论】:

    【解决方案2】:

    这是一个arrow function(或胖箭头函数):

    (a, b, c) => { /* ... */ }
    

    (几乎)等同于:

    function(a, b, c) { /* ... */ }
    

    箭头函数和用function 声明的函数之间的唯一区别是this 在箭头函数中具有词法绑定,而不是在常规函数中绑定的混乱泥潭。

    【讨论】:

    • 它还有另一件事。如果你做(a, b, c) => a + b + c,它就相当于function (a, b, c) { return a + b + c; }。不使用大括号时,如果只有一个命令,则返回它的结果。
    • 另外,没有指向参数对象的“免费”arguments 变量。
    • 好点,布齐纳斯!这对我来说似乎很明显,以至于我忘记指出了。将更新我的答案
    • 谢谢你们..这真的很有用..
    • 同样正确,斜视:不过,我认为这不太有趣,因为扩展运算符使 arguments 运算符变得多余。但据我所知,你是对的。
    猜你喜欢
    • 2015-07-15
    • 2018-07-17
    • 2011-04-16
    • 2014-07-28
    • 1970-01-01
    • 2016-09-03
    • 2015-04-17
    • 2018-02-26
    • 2017-06-11
    相关资源
    最近更新 更多