变量和赋值的顺序问题

我在看jaascript面向对象编程指南,第二章后面有个习题:

执行下面的语句后,v值会是什么.
var v = v || 10;

用编译器执行的结果是undefined。我有点想不明白。

我的理解是这样,在声明v的同时也给v赋值了,所以v应该是10;执行过程类似于这样
加一句话,这里是我个人认为的执行过程,并不是实际的,下面这段的结果是10,我只是不理解上边的代码结果为什么是undefined

var v;
v = v  || 10;
v;

所以我的困惑难道是赋值没有完成,只进行了变量声明么?

阅读 3.6k
3 个回答

v的值就是10。

你看的是赋值操作返回的是undefined。见图

图片描述

|| 的优先级高于=

v应该是10,变量声明提升,实际执行应该如下:

var v;
v = v||10;//等同于v = undefined||10

最终结果为10

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题