JS——对变量赋值的理解

var a=[1,2,3,45];
var b=[1,2,3,45];
console.log(a==b);//flase
console.log(a[1]==b[1]);//true
a.push(6);
console.log(a,b);//[ 1, 2, 3, 45, 6 ]   [ 1, 2, 3, 45 ]


1.a与b都是数组,两个等号比较的是值相等,故第三行为false。

var c=[1,2,3];
var d=c;
console.log(c==d);//true
console.log(c===d);//true
c.push(4);
console.log(c,d);//[ 1, 2, 3, 4 ]   [ 1, 2, 3, 4 ]

                      

2.c直接将自己的指针赋给了d ,因此c与d完全相等,故两个都为true。

3.将一个相等的东西赋给两个变量与将一个变量赋给另一个变量是不同的,上一个的意思是开辟两个内容相同的空间,但两个空间的指针不同,分别赋给两个变量,这两个变量之间互不影响,而后一个的意思是将指向c的指针赋给d,也就是说两个变量共享同一个空间,一旦改变,两者都会改变。

function Foo() {
    var i = 0; 
        return function() {
                console.log(i++);
                    }
                    }
                      
                    var f1 = Foo(),
                        f2 = Foo();
                        f1();//0
                        f1();//1
                        f2();//0

下面这道题为这题的变形

var i=0;
function Foo() {  
 return function() {
  console.log(i++);
   } 
      } 
      var f1 = Foo(),
          f2 = Foo();    
           f1();//0
           f1();//1
           f2();//2             
           f2();//3
           f1(); //4            
            console.log(i);//5

4.这题发生了变量泄露,每一次运行的时候都对i进行了重新赋值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值