我在看jaascript面向对象编程指南
,第二章后面有个习题:
执行下面的语句后,v值会是什么.
var v = v || 10;
用编译器执行的结果是undefined
。我有点想不明白。
我的理解是这样,在声明v的同时也给v赋值了,所以v应该是10;执行过程类似于这样
加一句话,这里是我个人认为的执行过程,并不是实际的,下面这段的结果是10,我只是不理解上边的代码结果为什么是undefined
var v; v = v || 10; v;
所以我的困惑难道是赋值没有完成,只进行了变量声明么?
v的值就是10。
你看的是赋值操作返回的是undefined。见图
|| 的优先级高于=
v应该是10,变量声明提升,实际执行应该如下:
最终结果为10