美文网首页
06JavaScript入门-作用域

06JavaScript入门-作用域

作者: 东邪_黄药师 | 来源:发表于2020-10-28 17:55 被阅读0次

作用域概述

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

  • 全局作用域
  • 局部作用域(函数作用域)
全局作用域:

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

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

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

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

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

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

    1. 全局变量: 在全局作用域下的变量 在全局下都可以使用
      注意 如果在函数内部 没有声明直接赋值的变量也属于全局变量
 var num = 10; // num就是一个全局变量
        console.log(num);

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

        }
        fn();
        // console.log(aru);
    1. 局部变量 在局部作用域下的变量 后者在函数内部的变量就是 局部变量
      注意: 函数的形参也可以看做是局部变量
     function fun(aru) {
            var num1 = 10; // num1就是局部变量 只能在函数内部使用
            num2 = 20;
        }
        fun();
// console.log(num1);
// console.log(num2);
    1. 从执行效率来看全局变量和局部变量
      (1) 全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
      (2) 局部变量 当我们程序执行完毕就会销毁, 比较节约内存资源

作用域链

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


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

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();

相关文章

  • 06JavaScript入门-作用域

    作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字...

  • AngularJs作用域高级特性,作用域属性监视、digest循

    AngularJs作用域高级特性,作用域属性监视、digest循环等 基于AngularJS入门与进阶(江荣波 著...

  • JS进阶系列

    在JS入门难点解析系列中,我们对JS的一些重要概念,比如:作用域,作用域链,原型,原型链,继承,活动对象,this...

  • js作用域

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 作用域,作用域链

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • 作用域

    词法作用域,动态作用域,全局作用域,局部作用域,函数作用域,块级作用域,有些地方还能看到隐式作用域和显示作用域。 ...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

  • [ES6]1.1作用域

    作用域 全局作用域(global/window) 函数作用域/局部作用域(function) 块状作用域({}) ...

网友评论

      本文标题:06JavaScript入门-作用域

      本文链接:https://www.haomeiwen.com/subject/dxlcvktx.html