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

 

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

 

更多精彩内容请关注公众号:干货分享录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sustyle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值