所以我有这段代码:
update
price_watches pw
set
min_percent_changed = calc.delta
from
(select
id,
product_id,
calculation_date,
(1 - (price_min / lag(price_min) over (order by product_id, calculation_date))) * 100 as delta
from
price_watches
where
price_min > 0) calc
where
calc.id = pw.id;
现在无论出于何种原因(在这种情况下我发生了一些我并不熟悉的类型强制)布尔表达式与增量运算符相结合,将 a 增加1。
但是,当我将(a + = a> 3)悬停在chrome调试器中时,它实际上会运行该操作。因此,如果我将该部分悬停在该部分上5次,它将实际运行该操作5次。而不是正常的运行时给出4的输出,我将得到8只是因为我在它上面徘徊了五次。
为什么它只运行一次操作并检查该奇异操作的结果?如果我将代码块悬停1000次不应该只输出该代码块的结果,就像它只运行一次一样?
答案 0 :(得分:0)
就像现在一样,您已暂停针对该代码运行的VM。你暂停了时间,正在看着状态。通过突出显示您正在该状态下执行该代码的操作,以查看它将如何评估。然后,因为这就是这个代码所做的事情,a成为VM中执行的结果。这样做会导致执行再次发生。然后,在执行中前进时,你刚刚暂停的状态就会被拉开。
对于为什么系统正在运行,这是一个直截了当的答案。
至于为什么添加1,Johan关于true
被转换为1
的评论是关于加法的。这是JavaScript的弱打字系统的一部分。