zoukankan      html  css  js  c++  java
  • 变量提升

    函数声明提升大于变量提升
    function a() {}
    var a;
    console.log(a); // function a() {}
    函数声明提升大于变量提升; 但如果变量被赋值, 会覆盖函数声明
    var b = 1;
    function b() {}
    console.log(b); // 1

    (function c() {})(); // IIEF 类似于函数表达式的右边, 函数名不能被访问到
    console.log(c); // ReferenceError: c is not defined

    var d = function e() {};
    console.log(e); // ReferenceError: e is not defined
    函数内部用var定义了和外部同名变量,函数将不再向上找外部的变量
    var f = 10;
    (function f() {
        console.log(f); // undefined; 由于下面f声明时的提示
        var f = 100;
        console.log(f); // 100
    })();
    console.log(f); // 10
    函数参数对象和内部都没有声明该变量,函数将向上去外部找这个变量
    (function g() {
        console.log(g); // function g() { console.log(g) }
    })();

    var h = function i() {
        console.log(i); // function i() {console.log(h)}
    };
    h(); 
    函数内部声明的变量属于函数内部作用域, 不会影响其外部的同名对象
    var j = 10;
    function k() {
        var j = 100;
        console.log(j); // 100
    }
    k();
    console.log(j); // 10

    // 如果改变的是同一个变量就会影响
    var l = 10;
    function m() {
        l = 100;
        console.log(l); // 100
    }
    m();
    console.log(l); // 100

    var obj = { q10};
    (function r() {
        console.log(obj); // undefined, 由于下面的变量提升
        var obj = {s100};
        console.log(obj); // {s: 100}
    })();
    console.log(obj); // {q:10}

    // 如果改变的是统一变量就会影响
    var obj = { t10};
    (function u() {
        console.log(obj); // { t: 10};
        obj1.t = 100;
        console.log(obj); // { t: 100};
    })();
    console.log(obj); // {t:100}
  • 相关阅读:
    sizeof()和 strlen()的区别 --- 个人笔记
    MySQL 生成自增流水号
    sql 逗号分隔列转行
    【转】.NET中lock的使用方法及注意事项
    【转】在一个SQL Server表中一行的多个列找出最大值
    使用 PIVOT 和 UNPIVOT
    List<T>转DataTable
    C# 分数计算类(加减乘除)
    【转】mysql执行计划介绍
    【转】SQL Server 存储:理解IAM 页
  • 原文地址:https://www.cnblogs.com/rencoo/p/10197444.html
Copyright © 2011-2022 走看看