Javascript代码处理流(函数中的函数)
所以我的问题是,我最近了解到javascript允许您在另一个函数中定义函数。但是,我注意到其他函数中的此类函数并不总是显式调用。举个例子,Javascript代码处理流(函数中的函数),javascript,Javascript,所以我的问题是,我最近了解到javascript允许您在另一个函数中定义函数。但是,我注意到其他函数中的此类函数并不总是显式调用。举个例子, function main() { function f1() { ... } ... } f1是否会在主功能执行时自动执行?在主f1中定义的位置(起点或终点)是否重要?在处理其他函数中的函数时,一般规则是什么?在本例中,f1仅定义,不调用。仅当调用或分配给稍后调用的某个字段/变量时,才会执行该命令 至于位置,它可以在任何地方定义
function main()
{
function f1()
{
...
}
...
}
f1是否会在主功能执行时自动执行?在主f1中定义的位置(起点或终点)是否重要?在处理其他函数中的函数时,一般规则是什么?在本例中,
f1
仅定义,不调用。仅当调用或分配给稍后调用的某个字段/变量时,才会执行该命令
至于位置,它可以在任何地方定义——函数定义总是在作用域中发现的第一件事,即使它们是在最后定义的。函数不是自动执行的,只在外部函数的作用域内可用,因此您无法访问
f1
外部main
,除非通过其他方式暴露。要执行f1
,请在代码中调用它
function main() {
function f1() { .. }
f1(); // calling f1
}
如果函数是函数声明,那么您可以在函数中的任何位置使用它,甚至在定义它之前。如果它是函数表达式,则只能在定义后使用。考虑一下如果在函数定义之前尝试使用函数表达式,会发生什么?
function main() {
f1(); // TypeError: undefined is not a function
var f1 = function() { }; // Function Expression
}
如果它是一个函数声明,这会起作用
function main() {
f1(); // No errors
function f1() { }; // Function Declaration
}
函数是表达式还是声明时有一些微妙的规则,这对函数作用域可能很有帮助。现在f1会自动执行并更改a
:
function main(){
var a = 1;
(function f1(){
a = 2;
})()
alert(a) // 2
}
试用:函数f1(){}代码>是一个函数声明(复制粘贴错误?;)