以下()有什么作用?它似乎打印出里面的内容()。
(function() {
console.log("test");
});
这就是ExtJS 4定义版本的方式:
(function() {
// Current core version
var version = '4.1.1', Version;
Ext.Version = Version = Ext.extend(Object, {
...
});
答案 0 :(得分:9)
我将不得不假设您错误地复制了代码。
这什么都不做(function() {
console.log("test");
});
这将“test”写入控制台
(function() {
console.log("test");
}());
你似乎问的真正问题是,为什么。
function () {...}
定义了一个新的匿名函数。
function () {...}()
调用匿名函数
(function () {...}());
parens用于强制执行该函数。如果没有某种类型的运算符,JS解释器将抛出一个SyntaxError。
有人在某些代码中加入immediately invoked function expression内联的原因是引入一个新的变量范围。在JavaScript中,块没有作用域,这可能会导致一些非常混乱的错误,因为新开发人员并不知道这个问题。
此外,使用函数作为包装器可以防止var
和function
声明污染全局命名空间,而是隐藏在IIFE中。这是 A Good Thing™。
鉴于附加信息J Any发布:
“这就是ExtJS 4定义版本”的方式(function() {
// Current core version
var version = '4.1.1', Version;
Ext.Version = Version = Ext.extend(Object, {
...
});
发布的代码不完整。大括号和parens没有正确匹配。
结束});
属于Ext.extend(Object, {
不 (function () {
。
答案 1 :(得分:7)
它什么都不做,因为匿名函数或其中的任何其他符号都不会被暴露,所以代码永远不会被调用。
如果你在末尾添加()
,那就是一个自调用匿名函数,它通常用于创建一些其他代码无法访问的局部变量
(function() {
console.log("test");
})();
Ext-JS确实有意义的代码是因为他们通过调用
在匿名函数内部创建了一些代码。Ext.Version = Version = Ext.extend(Object, ...
你的样本Ext-JS代码中有一个拼写错误。他们的代码实际上是以下
(function() {
// Current core version
var version = '4.1.1', Version;
// Exposes our local Version into the global Ext.Version object
Ext.Version = Version = Ext.extend(Object, {
//... More code
});
}()) // See the brackets after the function? That runs the code above immediately
答案 2 :(得分:2)
实际上,仅此一项就什么都不做。它定义了一个匿名函数,以后永远无法引用或调用它。
但是,这个:
(function() {
console.log("test");
})();
将定义一个匿名函数并将其命名为,将“test”打印到控制台。第一位与问题中的位相同,最后一位()
调用该函数。
答案 3 :(得分:1)
它什么都不做。它是括号中包含的函数表达式。没有它们,您将收到错误。