【问题标题】:Chrome DevTools: what's this arrow(<-) meaning?Chrome DevTools:这个箭头(<-)是什么意思?
【发布时间】:2014-03-16 06:10:12
【问题描述】:

我对 Chrome DevTools 中的这个符号 (

是返回值还是控制台值?

当我运行这个 while 循环时

var i = 0;
while (i < 5) {
    console.log(i);
    i++;
}

控制台日志两次吐出4,最后4个前面有一个(

【问题讨论】:

  • 箭头表示前一个表达式计算的值,尽管我不知道为什么 while 循环会计算一个值。使用x = while(i &lt; 5) { i++ } 捕获此值在语法上无效,但您可以使用x = eval('while (i &lt; 5) { i++ }') 捕获它,它将4 分配给x。很有趣。
  • 更奇怪的是,它计算为循环体内的最后一个表达式,即使循环体没有返回它:x = true; while (x) { x = false; "a" } // =&gt; "a"

标签: javascript while-loop google-chrome-devtools


【解决方案1】:

这与eval 函数的性质有关。请注意:

var i = 0, j = while(i < 5) { i++; };

产生编译错误。然而,

var i = 0, j = eval('while(i < 5) { i++; }');

将值4 分配给j。为什么是这样?引用MDN:

eval() 返回最后计算的表达式的值。

简而言之,它会计算表达式中对console.log 的所有调用,然后还会记录eval-ed 表达式本身的返回值,这恰好是最后一个i++ 的结果。

【讨论】:

  • 啊,当然。我发现控制台真的只是evaling 你的输入很有趣;我认为 Chrome 本身会有一种更“直接”的方式来评估您的输入。
  • @meagar 我会说 chrome is “直接”评估代码,而 eval 只是一个包装器。 :)
猜你喜欢
  • 2016-12-09
  • 2013-05-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2019-10-23
  • 2014-01-09
  • 1970-01-01
  • 2017-12-22
相关资源
最近更新 更多