js变量作用域 预解析 提升等

//------------------------------变量作用域---------------------

            //变量问题:根据作用范围,变量可以分为局部变量和全局变量。

            //局部变量:只有局部能够访问的变量。

            //函数内部用var定义的变量。

            //全局变量:在哪里都能访问到的变量。

            //函数外部或者进入javascript之后立即定义的变量和函数内部不带有var的变量。

            //    var num3 = 333;

            //    //函数加载的时候,只加载函数名,不加载函数体。

            //    function fn(){

            //        //局部变量

            //        var num1 = 111;

            //        //全局变量(成员变量)

            //        num2 = 222;

            //        console.log(num3);

            //    }

            //

            //    fn();

            ///  console.log(num1);

            //    console.log(num2);

            //    console.log(num3);

            //    //块级作用域,js中没有。

            //    {

            //        var aaa = 1;

            //    }

            //隐式全局变量

            function fn(){

                //b和c都是隐式全局变量

                var a = b = c = 1;

                //e和f都是隐式全局变量(分号相当于换行)

                var d = 1;e =2;f=3;

                //g和i都不是隐式全局变量

                var g = 1,h= 2,i=3;

            }

            fn();

            console.log(b);

            console.log(c);

            console.log(e);

            console.log(f);

            //    console.log(a);

            //    console.log(h);

            //    console.log(i);

//-------------------------变量提升和预解析---------------------------

            //预解析:js的解析器在页面加载的时候,首先检查页面上的语法错误。把变量声明提升起来。

            //变量值提升变量名,不提升变量值。而用function直接定义的方法是整体提升。

            //1.查看语法错误。

            //2.变量声明提升和函数整体提升(变量声明提升的时候,只提升变量名,不提升变量值)

            //3.函数范围内,照样适用。

            var aaa;

            console.log(aaa);

            aaa = 111;

            fn();

            function fn(bbb){

                //变量声明提升在函数内部照样实用。

                //函数的就近原则。

                var aaa;

                console.log(aaa);

                aaa = 222;

            }

            function fn2(bbb){

                //两个函数中的局部变量不会相互影响。

                console.log(bbb);

            }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,404评论 2 17
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,724评论 0 13
  • 函数声明和函数表达式有什么区别 (*)解析器会率先读取函数声明,并使其在执行任何代码之前可以访问;函数表达式则必须...
    coolheadedY阅读 3,021评论 0 1
  • 1.函数声明和函数表达式有什么区别 (*) 区别: 函数声明后面的分号可加可不加,不加也不影响接下来语句的执行,但...
    Sheldon_Yee阅读 3,118评论 0 1
  • 第一章1,什么叫程序:程序就是计算机按照人类完成事物的步骤和逻辑,通过计算机命令来逐步执行最终实现目标的一种机器语...
    悟名先生阅读 4,576评论 0 4

友情链接更多精彩内容