js专项之变量提升和函数提升题目

  • js专项之变量提升和函数提升题目已关闭评论
  • 166 次浏览
  • A+
所属分类:Web前端
摘要

 变量提升题目:答案如下(还请先思考哦)   函数提升题目:

 

变量提升题目:

 (function(){             a=5             console.log(window.a)             var a=10             console.log(a)          })()         

答案如下(还请先思考哦)

 

 //编译后         (function(){             var a;             a=5;             console.log(window.a) //undefined             a=10;             console.log(a)  //10         })()

 

 

函数提升题目:

 function test(){             console.log(1,foo);             console.log(2,bar);             var foo='hello'             console.log(3,foo);             var bar =function(){                 return 'world'             }             function foo(){                 return 'hello'             }         }         test()

 

答案如下:

  //编译后
//函数提升优先级大于变量提升
function test(){ function foo(){ return 'hello' } var foo; var bar; console.log(1,foo); //foo(){ } console.log(2,bar); //undefined foo='hello' console.log(3,foo); //hello bar =function(){ return 'world' } } test()

 

总结:

1.对于用var声明的变量,声明会提升到其所在作用域的顶端,但赋值操作不会提升。

2.函数声明同样也会提升,这里仅限于函数声明,并不包含函数表达式。

3.如果变量名和函数名一样的话,函数提升优先级高于变量提升。

4.如果存在两个函数声明,则先出现的声明先提升,后出现的声明后提升,函数名相同的时候,后提升的会覆盖先提升的。