()紧跟在函数之后意味着该函数将立即被激发
() right after a function means the function is going to get fired immediately?
可能重复:
函数声明后的空括号()在javascript中起什么作用?
我正在查看一些Javascript代码,并试图弄清楚是什么}();正好在返回num+10的意思之后。这是否意味着该函数将立即执行?我在哪里可以获得更多关于这方面的信息。
function addToTen(num) {
return function() {
return num+10;
}();
}
addToTen(5); // 15
谢谢,Venn。
是,但前提是它是一个函数表达式,这与函数声明不同。函数声明是定义第一个函数的方式:
function foo(){
}
如果在此之后添加()
,则会出现语法错误。如果函数被定义为函数表达式,则添加一组括号会立即执行它。只要函数没有如上定义,它们就是表达式,例如:
(function(){}());
var x = function(){}();
return function(){}();
你的实际例子只是。。。奇怪且毫无意义。这几乎是一个经典的闭包示例,类似于:
function addTo(x){
return function(y){
return x + y;
}
}
var addToTen = addTo(10);
addToTen(5); // 15;
但你的实际例子相当于:
function addToTen(num){
return num + 10;
}
所有多余的东西都是完全没有必要的。
是,表示函数对象已求值。
就像任何其他函数一样,你有两种方法来看待它:
var myFunction = function(val) {
return val + 1;
}
- 要返回函数对象或将其发送到其他地方,我只需要说myFunction
- 如果我想执行它,我说myFunction()
在上面描述的这个闭包或decorator中,您不是返回函数对象本身,而是立即返回执行该函数的值,因此后面会返回()。
是的,它会立即执行,但在本例中的用法没有任何意义。
通常用于anonymous functions
创建closure
。
请参阅为什么需要在同一行调用匿名函数?
我经常使用它的一个地方:
(function($) {
// secure way to ensure no conflict between $ (jQuery)
// and another js-framework can happen
$...
})(jQuery);
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- “{}”在下面的函数中这意味着什么
- 这个文档语法在MDN中对JavaScript函数意味着什么
- 将变量={}传递到函数中意味着什么
- 如果某个函数没有优化,这是否意味着声明它的所有函数也没有优化
- 如果函数的 toString() 以“绑定:”开头,这意味着什么?
- 这意味着什么(函数($){}
- 当一个变量等于一个函数时,这意味着什么
- 异步函数意味着没有阻塞,那么在javascript中呢
- 对两个函数调用angular.extend()意味着什么
- 在onclick事件中将一个函数封装在另一个函数中究竟意味着什么?
- 向函数添加原型意味着什么
- 避免使用全局变量意味着必须在不同的函数中声明相同的变量
- JS/jQuery函数意味着只重复一次触发器
- debounce函数意味着鼠标滚轮上的e.c preventdefault不再工作
- 意味着js堆栈,调试Angular错误:fnPtr不是一个函数
- ()紧跟在函数之后意味着该函数将立即被激发
- 在Javascript中,在构造函数的实例周围包上括号意味着什么