JS(JavaScript)
作用域;
一.作用域是什么;
就是变量和函数所被访问范围,控制变量和函数的可见性和生命周期
作用域分为全局作用域和局部作用域
全局作用域;是指在所有函数之外声明的变量,因为当前文档中的其他代码可以访问它
局部作用域;是指在函数内部声明的变量,因为该函数只能在它内部访问
二.变量的作用域;
1.全局变量和局部变量;
全局变量;是指在所有函数之外声明的变量,因为当前文档中的其他代码可以访问它
局部变量;是指在函数内部声明的变量,因为该函数只能在它内部访问

/*
    全局作用域(函数作用域之外的范围) - 全局变量
    * 全局变量的作用域 - 全局作用域 + 函数作用域
 */
var v1 = 100;
console.log(v1);

function fun(){
    /*
        函数作用域 - 局部变量
        * 局部变量的作用域 - 当前函数作用域
     */
    var v2 = 200;

    console.log(v1);
    console.log(v2);
}

console.log(v1);

fun();
// 全局作用域不能访问局部变量
// console.log(v2);

function fn(){
    console.log(v2);
}
fn();

2.声明提前;
先调用变量而结果不会出错同时变量会返回(undefinen)值

console.log(v);// undefined
var v = 100;
console.log(v);// 100
// 当全局变量与局部变量同名时 - 在函数作用域中只能访问局部变量
function fn(){
    console.log(v);// undefined
    var v = 200;
    console.log(v);// 200
}
fn();

console.log(v);// 100

3.按值传递;
是值实参变量的值同样的值给函数的形参变量,表示相同的变量

var q = 100;/* 全局变量 */
function fn(q){
    // 参数与局部变量的用法类似 - 只能作用于当前函数的内部
    q++;
    return q;
}

var result = fn(q);

console.log(result);// 101
console.logq);// 100

三.函数的作用域;
全局函数和内部函数;
全局函数;被定义在任何位置都可以访问和调用函数
局部函数;将一个函数定义在另一个函数之内,只可在函数的内部访问,而不能访问全局作用域中访问

function fn(){
    console.log('this is fn');
    /* 函数作用域 - 内部/私有函数 */
    function n(){
        console.log('this is n');
    }
    n();
}
/* 全局作用域 */
fn();

// n();// n is not defined

function fun(){
    /* 另一个函数作用域 */
    fn();

    n();// n is not defined
}
fun();

佐珥玎
41 声望8 粉丝