我目前正在尝试学习Javascript并理解函数是该语言最重要的方面之一,但我不得不说我发现它很难理解它们,特别是当在这里和那里使用不同的参数时.
我一直在看这个代码,我在另一个关于封闭的堆栈溢出帖子中读到并且无法理解16是如何被警告的,我已经使用console.log来计算每个点使用的值,并且似乎总共得到17有人可能解释一下吗?
function foo(x) {
// console.log(x); = 2
var tmp = 3;
return function (y) {
// console.log(y); = 10
alert(x + y + (++tmp));
// console.log(++tmp); = 5?
}
}
var bar = foo(2);
bar(10);
Run Code Online (Sandbox Code Playgroud)
如果有人能提供任何可能使事情开始对我有意义的功能的智慧,那将非常感激.
凯尔
该alert()命令真的弹出16.
++tmp 是preincrement语句 - 首先,它递增值(从3到4),然后继续执行该行.
所以2 + 10 + 4传递给了alert().
的console.log(++tmp)警报日志5的下方,这是因为tmp变量被再次递增,从4到5.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |