谁能给我解释一下这到底是什么意思?
!function (global, moduleDefinition) {
'use strict';
var dependencies = [];
if (typeof define === 'function' && define.amd) {
define(dependencies, moduleDefinition);
} else if (typeof exports === 'object') {
module.exports = moduleDefinition.apply(null, dependencies);
} else {
global.Utilities = moduleDefinition.apply(null, dependencies);
}
}(this, function () {
'use strict';
var Utilities = {};
return Utilities;
});
这已经传递给我,作为我们的新模块。
乔- !感叹号(或任何其他符号)将代码转换为表达式-您可以立即调用它
(function() {}());
!function() {}();
错误的版本
(function() {}());
!function() {}();
你不能调用函数声明!
function() {}() // wrong, don’t try to run this
可以将参数传递给被调用的函数
(function(foo) {
console.log(foo, foo === 3); //3, true foo is equal to passed value
}(3));
你可以传递全局对象-在浏览器环境中,它指向窗口对象,在Node -它指向全局对象。因为我们想要编写一个版本的代码,而不是为了环境检测而将其分叉,所以使用global作为可以保存指向全局对象的指针的变量更简单。比较window.setTimeout
(浏览器)与this.setTimeout
(节点)与global.setTimeout
(两者)
(function(global) {
global.setTimeout(function() {
console.log('I’m running independent to browser or server environment');
}, 1000);
}(this));
你错过了moduleDefinition的一些东西,休息在哪里?
这意味着该语句后面的代码必须在严格模式下运行。这可以用来确保在后面的代码中没有错误。
关于严格模式的更多信息:http://www.w3schools.com/js/js_strict.asp