• JS 变量和函数提升 全局变量和局部变量


    • 变量提升

    1.

    var a = 10;
    function test() {
        a = 100;
        console.log(a);
        console.log(this.a);
        var a;
        console.log(a);
    }
    test();//100  10  100

    =>

    var a = 10;//全局
    function test() {
        var a;//变量提升
        a = 100;//局部
        console.log(a);//局部
        console.log(this.a);//this指向全局window
        console.log(a);//局部
    }
    test();//100  10  100

    2.

    var a = 100;
    function test() {
        console.log(a);
        var a = 10;
        console.log(a);
    }
    test();//undefined  10

    =>

    var a = 100;
    function test() {
        var a;//变量提升
        console.log(a);
        a = 10;
        console.log(a);
    }
    test();//undefined  10

    3.

    var a = 100;
    function test() {
        console.log(a);
        a = 10;
        console.log(a);
    }
    test();
    console.log(a);
    //100  10  10

    =>

    var a = 100;
    function test() {
        console.log(a);//全局
        a = 10;//全局
        console.log(a);//全局
    }
    test();
    console.log(a);
    //100  10  10
    •  函数提升
    console.log(f1); // function f1() {}   
    console.log(f2); // undefined  
    function f1() { }//函数声明
    var f2 = function () { }//函数表达式
        (function (num) {
            var testStr = "test" + num;
            console.log(num);
        })(100);
    console.log(testStr);// testStr is not defined
        (function (num) {
            testStr = "test" + num;//不加var,全局变量
            console.log(num);
        })(100);
    console.log(testStr);// test100
  • 相关阅读:
    【PS】Colorful and flowing word tutorials 彩色流光字教程
    【Language】Popular Javascript Convention on Github
    java 题目
    swift 构造过程
    swift 继承相关
    swift 方法功能
    javascript闭包
    IOS swift学习地址
    guava 工具包
    数字和大写字母字符串
  • 原文地址:https://www.cnblogs.com/chrisghb8812/p/9921616.html
Copyright © 2020-2023  润新知