javascript中经典函数面试题

今天和大家说一说javascript中的经典函数面试题,这也是小编学习中总结的知识点。限于当前所学知识的有限,所以,可能稍有偏差和理解不深入的地方,还请大佬们积极指出。


经典面试题型一:



看到这题我们会想当然的认为,输出的a是18,b是9。因为我们知道javascript是弱类型的脚本语言,代码是一行一行的执行,实际这句话是错误的!


最终的答案是 a 是undefined,  b是9,分析为什么a是undefined 类型?

下面这个图片的代码其实和上面的表示的是相同的意思。如果可以转化成下面这种格式,相信大家就能理解为什么   a  确实是一个未定义的类型了。

那么这种转换的原理是什么呢?



分析以上代码的执行过程是:

   1 、解析器看到放在script标签里面的代码进行预解析

   2、找到var 、 function 和 参数并把它们提前

   3、var a;

   4、function f1()

   5、最后再按照原始说法:一行一行的执行代码

   6、执行过程,a=18; f1()

    7、f1作用域进行预解析   

    8、var b;

    9、var  a;

    10、一行一行的执行函数内部代码

以上就是上述代码的执行过程,可见在执行过程中,进行预解析分析十分重要,与此同时我们可以看到js不同于高级语言的特点,对函数的调用既可以放在函数定义之前。而高级语言我们都知道,在调用函数时,要么先定义函数,要么在调用函数之前进行函数的声明。


最后,,再附上两个经典的关于函数调用的面试题,请读者按照上述的方法自行分析,看看自己分析的结果和答案是否相符和,如果不符合还请追溯其中的原因。



答案是:9  9   9   9   9   a is not defined


感谢大家的阅读,喜欢的点个赞!也欢迎转发。


猜你喜欢

转载自blog.csdn.net/sunchanglan151/article/details/81009335