这段javascript代码是什么意思?望通俗易懂的解释

[复制链接]
查看11 | 回复3 | 2009-12-24 11:02:35 | 显示全部楼层 |阅读模式
if (++this.queueSpace * 2 >= this.queue.length)//为什么不直接用if (2>= this.queue.length)????的原因是:对象Queue 的Dequeue 方法,在对象构建以后调用的次数,不仅仅只有一次,比如说在初始化的时候 this.queue的长度为10(注意是长度,this.queue.length) this.queueSpace 的值是0;这时调用Dequeue 方法,语句 ++this.queueSpace * 2 >= this.queue.length执行的顺序,对this.queueSpace进行自增操作(这是this.this.queueSpace的值为1),然后*2再与this.queue.length比较,所以很明显 2肯定小于10,条件不成立,所以不会走if里面的语句。当再次执行Dequeue 函数时,这时的this.queueSpace 就和初始化时不同了,这时应该为1,然后再进行自增操作这是this.queueSpace 的值为2.如果还有不明白请 Hi me
回复

使用道具 举报

千问 | 2009-12-24 11:02:35 | 显示全部楼层
运行下这个你就知道怎么回事了,每次执行Dequeue这个方法的时候queueSpace的值都会变的(自增)。另外这个代码中怎么把Queue.prototype.Dequeue的定义写到Queue类里面去了?这样每次初始化一个新的Queue实例的时候都会重新定义Dequeue方法的。应该写到外面才对。
回复

使用道具 举报

千问 | 2009-12-24 11:02:35 | 显示全部楼层
这个代码不全吧?怎么没有 enqueue 的方法呢?queueSpace 似乎是 position 的意思。
回复

使用道具 举报

千问 | 2009-12-24 11:02:35 | 显示全部楼层
定义一个类,里面定义几个属性。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行