06JavaScript入门-作用域

2020-10-28  本文已影响0人  东邪_黄药师

作用域概述

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
JavaScript(es6前)中的作用域有两种:

全局作用域:

作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件。

 var num = 10;
 var num = 30;
 console.log(num);
局部作用域:

局部作用域(函数作用域) 在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用

 function fn() {
            // 局部作用域
            var num = 20;
            console.log(num);

        }
        fn();
变量的作用域:

变量的作用域: 根据作用域的不同我们变量分为全局变量和局部变量

 var num = 10; // num就是一个全局变量
        console.log(num);

        function fn() {
            console.log(num);

        }
        fn();
        // console.log(aru);
     function fun(aru) {
            var num1 = 10; // num1就是局部变量 只能在函数内部使用
            num2 = 20;
        }
        fun();
// console.log(num1);
// console.log(num2);

作用域链

只要是代码,就至少有一个作用域
 写在函数内部的局部作用域
 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称
作作用域链


作用域链 : 内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值 这种结构我们称为作用域链 就近原则

var num = 10;
        function fn() { // 外部函数
            var num = 20;

            function fun() { // 内部函数
                console.log(num);

            }
            fun();
        }
        fn();  //20
image.png
var a = 1;
function fn1() {
    var a = 2;
    var b = '22';
    fn2();
    function fn2() {
        var a = 3;
        fn3();
        function fn3() {
            var a = 4;
            console.log(a); //a的值 ?
            console.log(b); //b的值 ?
        }

    }
}
fn1();
var a = 1;
function fn1() {
    var a = 2;
    var b = '22';
    fn2();
    function fn2() {
        var a = 3;
        fn3();
        function fn3() {
            var a = 4;
            console.log(a); //a的值 ?  //4
            console.log(b); //b的值 ? //'22'
        }
    }
}
fn1();
上一篇 下一篇

猜你喜欢

热点阅读