深刻理解javascript 执行上下文和执行栈

var foo = function () {

    console.log('foo1');

}

foo();  // foo1

var foo = function () {

    console.log('foo2');

}

foo(); // foo2

复制代码

function foo() {

    console.log('foo1');

}

foo();  // foo2

function foo() {

    console.log('foo2');

}

foo(); // foo2复制代码

JavaScript 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行。当执行一段代码的时候,会进行一个“准备工做”,好比第一个例子中的变量提高,和第二个例子中的函数提高。
git

function test(arg) {
    // 1. 形参 arg 是 "hi"
    // 2. 由于函数声明比变量声明优先级高,因此此时 arg 是 function
    console.log(arg);
    var arg = "hello"; // 3.var arg 变量声明被忽略, arg = 'hello'被执行
    function arg() {
        console.log("hello world");
    }
    console.log(arg);
}
test("hi");
/* 输出:
function arg(){
    console.log('hello world') 
    }
hello 
*/复制代码

参考文章:github

chorer.github.io/2019/04/10/…
bash

相关文章
相关标签/搜索