返回
JS 函数的执行时机,解析“神秘”的 JS 执行顺序
前端
2023-11-28 11:59:26
前言
在JavaScript中,函数的执行时机是一个非常重要的概念。它决定了函数何时被执行,以及在执行时会发生什么。理解JS函数的执行时机,对于编写出健壮可靠的代码至关重要。
函数的执行时机
在JavaScript中,函数的执行时机主要有两种:
- 立即执行 :当函数被定义或调用时,立即执行。
- 延迟执行 :当函数被定义时,并不立即执行,而是等到某个条件满足时才执行。
立即执行函数
立即执行函数(IIFE)是指那些在定义的同时就立即执行的函数。IIFE通常用于创建私有变量和函数,或是在函数执行时立即释放资源。
(function() {
// 私有变量和函数
var privateVariable = 1;
function privateFunction() {
console.log("私有函数被调用了");
}
// 立即执行函数
privateFunction();
})();
在这个例子中,私有变量和私有函数都被包含在立即执行函数中。当立即执行函数被调用时,私有变量和私有函数立即被创建并执行,然后立即被销毁。这样,就实现了私有变量和私有函数的作用域只在立即执行函数内部。
延迟执行函数
延迟执行函数是指那些在定义时并不立即执行,而是等到某个条件满足时才执行的函数。延迟执行函数通常用于异步编程,或是在页面加载完成后执行某些操作。
function delayedFunction() {
// 延迟执行函数
console.log("延迟执行函数被调用了");
}
// 延迟1秒执行延迟执行函数
setTimeout(delayedFunction, 1000);
在这个例子中,延迟执行函数被定义为delayedFunction
。当setTimeout()
函数被调用时,延迟执行函数被注册到事件队列中。当1秒后,事件队列中的延迟执行函数被执行,输出"延迟执行函数被调用了"。
函数的执行顺序
在JavaScript中,函数的执行顺序是由执行上下文决定的。执行上下文是指函数执行时所处的环境,它决定了函数能够访问哪些变量和函数。
在JavaScript中,有两种执行上下文:
- 全局执行上下文 :当脚本开始执行时,首先创建全局执行上下文。全局执行上下文中的变量和函数可以被所有其他执行上下文访问。
- 函数执行上下文 :当函数被调用时,会创建一个函数执行上下文。函数执行上下文中的变量和函数只能被该函数及其内部嵌套函数访问。
在JavaScript中,函数的执行顺序是由执行上下文决定的。当一个函数被调用时,会创建一个新的执行上下文,并把该函数作为当前执行上下文。当函数执行完毕后,当前执行上下文被销毁,并返回到上一个执行上下文。
总结
在JavaScript中,函数的执行时机和执行顺序是由执行上下文决定的。理解JS函数的执行时机,对于编写出健壮可靠的代码至关重要。