我正在分析angular文件上传插件的一些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;
}
=
它是一个ES6箭头函数。在你的例子中,它解释了这样的事情:
"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"];
注意,这是巴别塔编译的。
这是一个箭头函数(或胖箭头函数):
(a, b, c) => { /* ... */ }
(几乎)相当于:
function(a, b, c) { /* ... */ }
箭头函数和用函数
声明的函数之间的唯一区别是this
在箭头函数中有词汇绑定,而不是在常规函数中有混淆的绑定困境。
问题内容: 档案:SafeString.js 我从未见过。是否有任何等效的东西更容易理解? 问题答案: 它是ES6模块系统的一部分,该文档中还有一个有用的示例: 如果模块定义了默认导出: 那么您可以通过省略花括号来导入默认导出: 更新: 自2015年6月,该模块系统中定义§15.2和在特定语法中定义§15.2.3ECMAScript的2015规范的。
文件:safeString.js 我以前从未见过。对于,是否有更容易理解的等效内容?
问题内容: 我想知道 = + _ 运算符在JavaScript中的含义。看起来像是在做作业。 例: 问题答案: r = +_; 尝试将任何内容强制转换为数字。 只是一个变量名(不是运算符),可以是,等等。 例: 将“ 1”强制转换为纯数字1。 现在,不是。 此外,根据算术运算符的MDN页面: 一元加号运算符位于其操作数之前,并求值为其操作数,但是 尝试将其转换为数字(如果尚未转换为数字) 。 […
我想问最后一句是什么意思和做(导出默认的HelloWorld;),但我找不到关于它的任何教程。
我正在阅读ScrollListView的源代码,在一些地方我看到了的用法。 88号线。 这是的缩写吗?如果有什么不同,又是怎么回事?
你可以看到(...)=