一道坑爹的面试题

网上看到一道坑爹的面试题,代码如下:
(js真是处处是坑呀。。。(┬_┬))

alert(a)
a();
var a=3;
function a(){
    alert(10)
}   
alert(a)
a=6;
a();

输出结果(chrome下):

function a(){
    alert(10)
}  

10

3

console Error:
Uncaught TypeError: a is not a function

作为前端小白的我,刚开始也是懵逼的呀,虽然我还知道变量提升。

网上的解释:

  1. 同一个标识符的情况下,变量声明与函数声明都会提升
  2. 函数声明会覆盖变量声明,但不会覆盖变量赋值

所以以上代码等价于:

var a;
function a(){
    alert(10)
}   
alert(a)  //function a(){alert(10)}   
a();      //10
a=3;
alert(a)  //3
a=6;
a();  //Uncaught TypeError: a is not a function

ps:没有去其他浏览器下测试,有兴趣的可以去试一下结果是否一样

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,287评论 25 708
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,210评论 30 471
  • 题目 题目如上,这道题的经典之处在于它综合考察了面试者的JavaScript的综合能力,包含了变量定义提升、thi...
    庸者的救赎阅读 2,234评论 12 27
  • 宝贝,昨天中午带你去借书,途中我俩兴奋之至,妈妈一个心急跑快了,你未及跟上,摔了一跤,右膝盖擦破不小的一块皮,殷殷...
    卿花飞雪阅读 245评论 0 0
  • 新来一年的同事是个很可爱的小女生。大大的眼睛,带着一股机灵劲,因为长得也讨喜,很得大伙儿欢喜。但是该姑娘脾...
    叶yes思阅读 594评论 2 18