美文网首页
js变量作用域 预解析 提升等

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

作者: Elvis_645e | 来源:发表于2018-08-06 14:27 被阅读0次

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

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

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

            //函数内部用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);

            }

相关文章

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

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

  • JS高级-闭包、沙箱

    作用域,作用域链,预解析 变量:局部变量、全局变量 作用域:变量的使用范围 js中没有块级作用域,一对括号中定义的...

  • js小知识点(预解析 引用 异常 严格模式)

    预解析:会预先解析一些(变量定义、函数会预解析);var a=12;只把var a提到作用域的顶部js会把变量的声...

  • JavaScript(1)预解析

    预解析只会发生在通过var定义的变量和function上。 一、原理 1. 定义:预解析:在当前作用域下,js运行...

  • 闭包

    作用域 js中变量分为全局变量、局部变量 预解析 js会把带有var和function关键字的事先声明,并在存放在...

  • JS基础:作用域

    一、作用域概念-预解析规则、表达式 作用域: 域:空间,范围,区域……作用:读,写 浏览器——JS解析器: 在浏览...

  • 变量作用域

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

  • 作用域、作用域链

    作用域 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 作用域下浏览器的操作 预解析(找v...

  • 预解析

    预解析: 在代码中,首先会预先解析一些(变量定义、函数会预解析); var a=12; js只把var a提到作用...

  • JS作用域

    一、js作用域概念---预解析规则,表达式 域:指的是一个空间、范围、区域 作用:通常指读和写 所以 作用域:指的...

网友评论

      本文标题:js变量作用域 预解析 提升等

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