我开始学习一个项目的javascript,我找到了一个脚本,它完成了我需要做的一部分,我想知道它是如何工作的,对我来说都需要它修改。
最初它是在页面内部使用的,现在我已将它自己放在一个文件中并且不再起作用,所以我将它分成几部分,因为我无法完成整个事情。
这就是现在最困扰我的事情:
1)这是函数的声明吗?它叫什么名字?如何调用它?
(function() {
//some code
})();
2)不知道这里发生了什么
var VARIABLE = VARIABLE || {};
3)我在这里定义了methodCall
的实现吗?像在Java中覆盖一个方法的东西?
VARIABLE.methodCall = function(parameter) {
console.log("parameter was: " + parameter);
};
提前感谢您的帮助。
答案 0 :(得分:10)
1)创建一个未命名的函数并执行它。这对于为函数外部不可见的局部变量创建范围很有用。除此之外你不需要调用它,最后的'()'为你做了。
2)如果变量为null / undefined,则将其设置为空对象。
3)是的,这应该按照您的预期工作,您可以调用VARIABLE.methodCall(参数)
在回复您的评论时,这是一个常见的例子
function foo (VARIABLE) {
var VARIABLE = VARIABLE || {};
}
答案 1 :(得分:3)
(function() {
//some code
})();
只运行//some code
,但其中的变量不会保留,因为function() { }
块引入了新的内部范围。
function() { }
表示法称为闭包,它允许变量为函数。例如,
(function() { })()
是一种常见的JavaScript习惯用法。在)
之后,有()
,它在函数之前调用表达式,so (callback || function(x) { return x; })(x)
是允许的。
var a = function a() { return 1; }
var VARIABLE = VARIABLE || {};
使用短路OR,如果未定义VARIABLE
,则VARIABLE
将设置为{}
,即空对象。 (否则,如果存在VARIABLE
,则不会更改)
x = A || B
表示“如果A的计算结果为TRUE,则x为A,否则x为B。”。
VARIABLE.methodCall
将methodCall
添加到VARIABLE
,而不删除VARIABLE