zoukankan      html  css  js  c++  java
  • JavaScript中var a=b=c=d的发现

    看了别人的博客随手记录下

    先看一下以下的代码

    1 var a=1,b=2,c=3;
    2     
    3     (function(){
    4         var a=b=1;
    5     })();
    6 
    7     console.log(a);
    8     console.log(b);

    这是大家众所周知的闭包了,没错,闭包的一个很重要的用途就是变量不能在外部访问,不会污染外部变量,所以大家是不是会认为7,8行的结果分别是1 2 呢?其不然,7,8行的正确结果是1,1。

    为什么会这样呢?我一开始也是认为结果是结果是1 2,其实JS是这样执行的,在闭包中var声明的是局部变量,所以a是局部变量,而b呢,b没有用var声明,所以在闭包中b是全局变量,所以前面的b=2被闭包里面的b=1覆盖了,所以输出a和b都是1

     

    我是这么理解的。大家有不同的理解可以留言,由于第一次写博客,文笔欠佳,大家见谅

     

  • 相关阅读:
    C# 类 (7)
    C# 类 (6) -继承
    C# 类 (5)
    c# 类(4)
    C# 类(3)
    c# 类(2)
    C# 类 (1)
    C# 零碎知识点
    VINS_Fusion 初始化过程
    视觉SLAM(一)预备课程与基础知识
  • 原文地址:https://www.cnblogs.com/haiku/p/5236421.html
Copyright © 2011-2022 走看看