作用域面试题

// 1.
var a = 1;
 function a(){
    console.log(2)
 };
 console.log(a);
  //解析:
  /*
  *function a(){
  * console.log(2)
  * }
  * var a;
  * a = 1;
  * console.log(a)
  * */
// 2.
var b = 1;
 function fn(b){
    return b = 3;
 };
 console.log(fn);//打印函数 //   ƒ fn(b){
                            //    return b = 3;
                            //   }
// 3.
var b = 1;
function fn(b){
    b = 3;
    console.log(b)//3
};
console.log(fn());//undefined
// 4.首先在局部里面找c,然后没找到,就去全局里面找c,在全局找到了c,就把全局的c给覆盖掉了
  var c = 1;
  function fn1(){
    c = 2;
    console.log(c) //2
  }
  fn1();
  console.log(c); //2
// 5. 
var a = 1;
function one(){
 var a = 2;
 function two(){
   a = 3;
   console.log(a)  //3
 }
 two();
 console.log(a)//3
}
one();
console.log(a);//1
  
//如果父级作用域中有用var申明的同名的变量,则覆盖父级的同名变量,如果父级中没有,则相当于创建了一个全局变量
//  局部作用域里面不写var ,那么这个变量就是"隐式全局"
posted @ 2017-08-24 16:28  Sweet's  阅读(93)  评论(0编辑  收藏  举报