关于js的作用域,自我认知

作用域要从两个步骤去理解这个概念:

1>首先要找到诸如 var  function 参数  之类

  alert(a);var a = 3;

  alert(a)是 '未定义'

     所有的变量,在正式运行代码前,都提前赋了一个值:未定义

  fn1 = function fn1(){ alert(2); }

    所有的函数,在正式运行代码之前,都是整个函数块

  遇到重名的:只留一个,变量和函数重名了,就只留下函数

2>逐行解读代码:

  表达式:= + - * / % ++ -- ! 参数……

  表达式可以修改预解析的值!

alert(a);    //function a (){ alert(4); }            
var a = 1;   
alert(a);    //1                
function a (){ alert(2); }
alert(a);    //1                
var a = 3;        
alert(a);    //3                
function a (){ alert(4); }
alert(a);    //3                

a();        //a is not a function
var a = 1;
function fn1(){
    alert(a);        //undefined                
    var a = 2;
}
fn1();           
alert(a);         //1
var a = 1;
function fn1(){
    alert(a);                        
    a = 2;
}
fn1();          //1
alert(a);        //2        
var a = 1;
function fn1(a){      //参数a = var a
    alert(a);        //undefined                
    a = 2;
}
fn1();
alert(a);            //2
var a = 1;
function fn1(a){
    alert(a);                        // 1
    a = 2;
}
fn1(a);
alert(a);                            // 1

猜你喜欢

转载自www.cnblogs.com/gao-xiaomeng/p/9553135.html