js 函数做用域

/*
 * 函数做用域    
 *     - 调用函数时建立函数做用域,函数执行完毕之后,函数做用域销毁
 *     - 每调用一次函数就会建立一个新的函数做用域,他们之间是互相独立的
 *     - 在函数做用域中能够访问到全局做用域的变量
 *         在全局做用域中没法访问到函数做用域的变量
 *     - 当在函数做用域操做一个变量时,它会先在自身做用域中寻找,若是有就直接使用
 *         若是没有则向上一级做用域中寻找,直到找到全局做用域,
 *         若是全局做用域中依然没有找到,则会报错ReferenceError
 *     - 在函数中要访问全局变量能够使用window对象
 */

函数

//建立一个变量
var a = 10;

function fun(){
    
    var a = "我是fun函数中的变量a";
    var b = 20;
    
    //console.log("a = "+a);
    
    function fun2(){
        console.log("a = "+window.a);
    }
    
    fun2();
    
}

//fun();
//console.log("b = "+b);

/*
 * 在函数做用域也有声明提早的特性,
 *     使用var关键字声明的变量,会在函数中全部的代码执行以前被声明
 *     函数声明也会在函数中全部的代码执行以前执行
 */

spa

function fun3(){
    
    fun4();
    
    //console.log(a);
    
    var a = 35;
    
    function fun4(){
        alert("I'm fun4");
    }
    
}

//fun3();


var c = 33;


/*
 * 在函数中,不适用var声明的变量都会成为全局变量
 */code

function fun5(){
    //console.log("c = "+c);
    //c = 10;
    
    //d没有使用var关键字,则会设置为全局变量
    d = 100;
}

fun5();

//在全局输出c
//console.log("d = "+d);

var e = 23;

...对象

/*
 * 定义形参就至关于在函数做用域中声明了变量
 */
function fun6(e){
    alert(e);
}

fun6();
相关文章
相关标签/搜索