const var1 = 8;
const var2 = 9;
function func1(){
console.log("Inside func1")
}
func1();
当执行上述程序时,将创建全局执行。在全局执行内部,将在全局执行上下文和值8的创建阶段期间创建两个变量var1和var2。9将在全局执行上下文的执行阶段在这些变量中赋值,所以我的问题是函数标识符func1会发生什么。当变量名func1在全局阶段声明时,它将存储在内存中的什么内容。还有函数声明在幕后是如何工作的函数是如何存储在内存中的以及存储在哪里的。
1条答案
按热度按时间nzk0hqpo1#
当执行上述程序时,在全局执行上下文的创建阶段,函数标识符func1将被提升到作用域的顶部,并且对函数对象的引用将被存储在内存中,这意味着甚至在函数被声明之前,func1变量将被赋予对函数对象的引用,并且可以从代码中的任何地方调用它。
函数声明的工作原理是创建一个函数对象,该函数对象由函数代码和对周围作用域的引用组成。该函数对象存储在内存中的特定位置,并为函数标识符分配一个对该位置的引用。当调用函数时,将创建一个新的执行上下文,并在该上下文中执行函数代码。
值得注意的是,函数表达式(与函数声明相反)不会提升到作用域的顶部,它们的标识符仅在表达式本身的作用域中可用。