对于var a=b=3的理解

天偶然间看到有一个笔试题是这样的:

(function(){
var a=b=3;
})();
console.log(typeof a!=='undefined');
console.log(typeof b!=='undefined');

问输出结果是什么:

起初我的判断是俩个都是false,因为我的理解是变量a,b在匿名函数里面是局部变量,在全局范围是没有效果的。 
可最终结果却是 false true 
很是郁闷,最终经过参考别的讲解,发现,原来是我对var=a=b=3的理解错误。

我的理解是:var a=3,var b=3;
正确的理解是:从右向左,b=3,var a=b;

由此不难看出b没有声明,而是直接赋值,可作为全局变量, 
而a则在函数中进行了声明,并把b的值赋值给a ,a作为局部变量。
 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在给出的代码,以正号(+)表示新增定义,以负号(-)表示修改删除的定义。每个定义后面数字表示相对于某个基地址的移量。偏移量为负数表示在地址之前的位置,为零或正表示在基地址之后的位置。 下是每个定义的说明: - `-0000000000004 r:.word 2 dup(?)`: 定义一个名为 `r`数组,数组元素的大小为 `word`(即2字节),并且有2个元素。 - `-0000000000000012 var_0:.long ?`: 定义了一个名为 `var_0` 的变量,大小为 `long`(即4字节)。 - `-0000000000000010 var_2:.long ?`: 定义了一个名为 `var_2` 的变量,大小为 `long`。 - `-000000000000000E .word ? ; undefined`: 定义了一个未命名的 `word` 类型的变量。 - `-000000000000000D var_5:.word ?`: 定义了一个名为 `var_5` 的变量,大小为 `word`。 - `-000000000000000C var_6:.word ?`: 定义了一个名为 `var_6` 的变量,大小为 `word`。 - `-000000000000000B var_7:.word ?`: 定义了一个名为 `var_7` 的变量,大小为 `word`。 - `-000000000000000A var_8:.word ?`: 定义了一个名为 `var_8` 的变量,大小为 `word`。 - `-0000000000000009 var_9:.word ?`: 定义了一个名为 `var_9` 的变量,大小为 `word`。 - `-0000000000000008 var_A:.word ?`: 定义了一个名为 `var_A` 的变量,大小为 `word`。 - `-0000000000000007 var_B:.word ?`: 定义了一个名为 `var_B` 的变量,大小为 `word`。 - `-0000000000000006 var_C:.word ?`: 定义了一个名为 `var_C` 的变量,大小为 `word`。 - `-0000000000000005 var_D:.word ?`: 定义了一个名为 `var_D` 的变量,大小为 `word`。 - `-0000000000000004 var_E:.word ?`: 定义了一个名为 `var_E` 的变量,大小为 `word`。 - `-0000000000000003 var_F:.word ?`: 定义了一个名为 `var_F` 的变量,大小为 `word`。 - `-0000000000000002 var_10:.word ?`: 定义了一个名为 `var_10` 的变量,大小为 `word`。 - `-0000000000000001 var_11:.word ?`: 定义了一个名为 `var_11` 的变量,大小为 `word`。 - `+0000000000000000 var_12:.long ?`: 修改了之前的定义,将 `var_12` 的大小改为 `long`。 - `+0000000000000002跟-000000000000000E r:.word 2 dup(?)`: 修改了之前的定义,将 `r` 的元素大小改为 `word`。 - `-000000000000000C s:.word 4 dup(?)`: 修改了之前的定义,将 `s` 的元素大小改为 `word`。 - `-0000000000000008 .word ? ; undefined`: 定义了一个未命名的 `word` 类型的变量。 - `-0000000000000007 var_1:.word ?`: 定义了一个名为 `var_1` 的变量,大小为 `word`。 - `-0000000000000006 var_2:.word ?`: 定义了一个名为 `var_2` 的变量,大小为 `word`。 - `-0000000000000005 var_3:.word ?`: 定义了一个名为 `var_3` 的变量,大小为 `word`。 - `-0000000000000004 var_4:.word ?`: 定义了一个名为 `var_4` 的变量,大小为 `word`。 - `-0000000000000003 var_5:.word ?`: 定义了一个名为 `var_5` 的变量,大小为 `word`。 - `-0000000000000002 var_6:.long ?`: 定义了一个名为 `var_6` 的变量,大小为 `long`。 - `+0000000000000000 var_8:.long ?`: 修改了之前的定义,将 `var_8` 的大小改为 `long`。 - `+0000000000000002 var_A:.long ?`: 修改了之前的定义,将 `var_A` 的大小改为 `long`。 - `+0000000000000004 var_C:.long ?`: 修改了之前的定义,将 `var_C` 的大小改为 `long`。 - `+0000000000000006的差别`: 这部分没有给出具体的定义,无法提供详细说明。 根据上述说明,你可以看到在修改或删除定义时,变量的类型和大小可能发生了变化。此外,还需要注意变量在内存的布局和相对于基地址的偏移量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值