作用域题

Posted xiaotaiyangye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域题相关的知识,希望对你有一定的参考价值。

1
 var a=12;
 function fn(){  
    console.log(a)     //undefined
    var a=45;
    console.log(a)     //45
 }
 fn()

 2
var a=12;
 function fn(){
  console.log(a)      //12
   a=45;
   console.log(a)      //45
 }
fn()

 3
 function fn(){
   console.log(11)
   function ff(){
     console.log(22)
   }
   ff()
 }
 fn()     //11
 ff()      //ff is not defined
 函数归属谁,跟它在哪调用无关,而是在哪定义有关

 4
 function fn(){
   console.log(5)
   fn()
 }
 fn()      //自调用5

5
 var a=12;
 function fn(){
   console.log(a)     //undefined
   return 4;
   var a=45;
 }
 fn()
 函数内部的return,不影响函数内部的预解释

 6
 var a=45;
 function fn(a){
    console.log(a)      //undefined
 }
 fn()
 a是私有变量

 7
 var a=45;
 function fn(a){
    console.log(a)     //5
 }
 fn(5)

 8
var a=123;
function fun(){
    console.log(a)     //123
}
 fun()

 9
 var a=123;
 function fun(){
    console.log(a)     //undefined
   var a=456;
 }
 fun()
 console.log(a)     //123

 10
 var a=123;
 function fun(){
    console.log(a)      //123
    a=456;
 }
 fun()
 console.log(a)      //456
 fun存储模块没有var,所有找上一级,所以,a=456,改变了a的值

 11
 var a=123;
 function fun(a){
    console.log(a)      //undefined
    a=456
 }
 fun()
 console.log(a)      //123
 fun(),里面有形参a

 12
 var a=123;
 function fun(a){
   console.log(a)      //123
   a=456
 }
 fun(123)
 console.log(a)     //123
 形参a,实参123,

 13
 var a=12;
 function fn(){
   console.log(a)     //undefined
   var a=45;
   console.log(a)     //45
 }
 fn()

 14
 var a=12;
 function fn(){
   console.log(a)      //12
   a=45;
   console.log(a)      //45
 }
 fn()

 15
 function fn(){
   console.log(11)
   function ff(){
     console.log(22)
   }
   ff()
 }
 fn()     //11
 ff()     //ff is not defined

 16
 var a=45;
 function fn(a){
   console.log(a)      //undefined
 }
 fn()

 17
 函数和函数变量名重名
 function fn(a){
    console.log(a)      //function a(){}
   var a=123;
   console.log(a)      //123
   function a(){}
   console.log(a)     //123
      var b=function(){}
   console.log(b)      //function(){}
   function d(){}
 }
 fn(1)
 如果我们声明的变量和函数名同名了,在预解释的时候,只声明一次

 18
 function test(a,b){
      console.log(a)     //1
      c=0;
   var c;
   a=3;
   b=2;
   console.log(b)      //2
   function b(){}
   function d(){}
   console.log(b)      //2
 }
 test(1)

 19
 function test(a,b){
    console.log(a)     //function a(){}
    console.log(b)      //undefined
    var b=234;
    console.log(b)      //234
    a=123;
    console.log(a)     //123
    function a(){}
    var a;
    b=234;
    var b=function(){}
    console.log(a)     //123
    console.log(b)     //function(){}
 }
 test(1)













































































































































































以上是关于作用域题的主要内容,如果未能解决你的问题,请参考以下文章

作用域题

作用域题

JavaScript全局作用域,函数作用(局部作用域),块级作用域,动态作用域,作用域链

JavaScript作用域:全局作用域局部作用域块级作用域作用域链变量提升

0140 JavaScript作用域:概述全局作用域函数作用域块级作用域

作用域和闭包作用域和作用域链