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
感谢大家的阅读,喜欢的点个赞!也欢迎转发。