题目大概是这种:

function outer(){
    return inner;
    var inner = "a";
    function inner(){};
    inner = 9;
}
alert(typeof outer());

当时的回答是结果是——function (回来測试结果也是一样)

本来的想法是,inner 在outer 运行的过程中,以下有一个函数声明,而函数声明会提升,也就是 JS 解析器会领先读取函数声明,假设不是声明函数而是定义一个变量,那结果就会是 undefined。

问题是,经过面试官的百般拷问,我就犹豫了。尽管结果是正确的,可是不知道自己这样理解对不正确。问面试官,结果是无可奉告……尽管已经被刷,但还是在纠结这个问题。

javascript 是解释性语言,也就是一行行解释运行。那为什么会先读取函数声明?是否在javascript中有存在预编译呢?

求解答。!

问题是,经过面试官的百般拷问,我就犹豫了。

版权声明:本文为mqxnongmin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mqxnongmin/p/10738123.html