关于js函数声明和调用函数的问题

小弟js新手,最近在码代码时突然在想一个问题:如果想要一段js代码在页面加载后自动执行会把这段代码封装到自执行函数里,但是对于变量和函数的声明却可以在自执行函数外,而函数... 小弟js新手,最近在码代码时突然在想一个问题:
如果想要一段js代码在页面加载后自动执行会把这段代码封装到自执行函数里,但是对于变量和函数的声明却可以在自执行函数外,而函数的调用只能在自执行函数内。为何声明可以自动执行而调用不可以?
望大佬解答。
展开
 我来答
网海1书生
科技发烧友

2018-08-13 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

“函数的调用只能在自执行函数内”这句话是错的,应该说如果函数内的语句涉及页面DOM元素的操作,则函数的调用最好是放到自执行函数内,否则就可以放在外面执行。这是因为如果不放在自执行函数内而是放在外面立即执行,那么执行的时候页面的整个DOM结构很可能尚未完全加载到内存,这时候如果要对页面的某个DOM元素进行操作就很可能会失败(JS可能会认为这个元素不存在而返回null),所以为了保险起见就把函数的调用放到自执行函数内,因为自执行函数肯定是在页面全部调入内存后才执行的。而如果你的代码没有涉及任何页面元素的操作,自然就不需放到自执行函数内啦,比如下面这个:

function fun1(){
    return 1+2;   //这个fun1函数只是进行最简单的数学运算,没有操作页面元素
}
console.log(fun1());   //所以fun1可以直接调用
追问
您贴出来的代码是在console.log()里调用函数,如果向下面这种情况:
function fun1(){
..
}
fun1();
这样是否能够直接执行?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式