关于js函数声明和调用函数的问题
小弟js新手,最近在码代码时突然在想一个问题:如果想要一段js代码在页面加载后自动执行会把这段代码封装到自执行函数里,但是对于变量和函数的声明却可以在自执行函数外,而函数...
小弟js新手,最近在码代码时突然在想一个问题:
如果想要一段js代码在页面加载后自动执行会把这段代码封装到自执行函数里,但是对于变量和函数的声明却可以在自执行函数外,而函数的调用只能在自执行函数内。为何声明可以自动执行而调用不可以?
望大佬解答。 展开
如果想要一段js代码在页面加载后自动执行会把这段代码封装到自执行函数里,但是对于变量和函数的声明却可以在自执行函数外,而函数的调用只能在自执行函数内。为何声明可以自动执行而调用不可以?
望大佬解答。 展开
1个回答
展开全部
“函数的调用只能在自执行函数内”这句话是错的,应该说如果函数内的语句涉及页面DOM元素的操作,则函数的调用最好是放到自执行函数内,否则就可以放在外面执行。这是因为如果不放在自执行函数内而是放在外面立即执行,那么执行的时候页面的整个DOM结构很可能尚未完全加载到内存,这时候如果要对页面的某个DOM元素进行操作就很可能会失败(JS可能会认为这个元素不存在而返回null),所以为了保险起见就把函数的调用放到自执行函数内,因为自执行函数肯定是在页面全部调入内存后才执行的。而如果你的代码没有涉及任何页面元素的操作,自然就不需放到自执行函数内啦,比如下面这个:
function fun1(){
return 1+2; //这个fun1函数只是进行最简单的数学运算,没有操作页面元素
}
console.log(fun1()); //所以fun1可以直接调用
追问
您贴出来的代码是在console.log()里调用函数,如果向下面这种情况:
function fun1(){
..
}
fun1();
这样是否能够直接执行?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询