控制台窗口如何在内部处理JavaScript算术赋值?返回值来自哪里?

控制台窗口如何在内部处理JavaScript算术赋值?返回值来自哪里?,javascript,console,variable-assignment,read-eval-print-loop,Javascript,Console,Variable Assignment,Read Eval Print Loop,我最近一直在玩JavaScript,我正在学习的这门课程一直强调从内部了解JavaScript的重要性 所以我有一个奇怪的问题,主要是我试图理解JavaScript在内部是如何工作的 假设我在控制台中执行以下计算: >> x = 1 < 1 >> x = x + 2 < 3 >x=1 < 1 >>x=x+2 < 3 返回到那里的“3”,它到底从哪里来 比如,它首先计算“x+2”,然后返回3,并将内存中x的值设置为3?或者它会计算“x+2”,将其保存

我最近一直在玩JavaScript,我正在学习的这门课程一直强调从内部了解JavaScript的重要性

所以我有一个奇怪的问题,主要是我试图理解JavaScript在内部是如何工作的

假设我在控制台中执行以下计算:

>> x = 1
<  1
>> x = x + 2
<  3
>x=1
<  1
>>x=x+2
<  3
返回到那里的“3”,它到底从哪里来

比如,它首先计算“x+2”,然后返回3,并将内存中x的值设置为3?或者它会计算“x+2”,将其保存在x的内存空间中,然后从同一内存空间返回x的值

或者甚至只是在内存空间中改变x的值而不移动它,然后返回x的值

我也非常感谢任何关于如何进一步了解JavaScript内部工作原理的信息,以回答更多类似的问题


谢谢

如果您曾经在基于终端的系统(如Unix)上工作过,则更容易理解正在发生的事情。把控制台想象成一种
bash
终端。如果在命令行终端中键入命令并按enter键,它将以输出响应,有时甚至出现错误

Chrome控制台中也发生了类似的事情。每次打开Chrome控制台时,它都会保留一个会话,用于存储变量和函数。当您调用或使用相同的变量或函数时,它只是返回该值

顺便说一句,当你键入

>> x = 1
内部发生的情况是,在全局
窗口
对象中创建了一个名为
x
in的新属性。因此
x=1
window.x=1
相同。这就是控制台如何记住您的分配,并在以后调用时使用它


我希望我设法把你弄糊涂了,所以我就到此为止。

你可以拿你的例子进一步看看它的逻辑,如

>> x = 1
<  1
>> y = x = x + 2
<  3
>> x == y
<  true
>x=1
<  1
>>y=x=x+2
<  3
>>x==y

它基本上是生产线的输出。您在浏览器上看到的一些功能是在Javascript引擎上实现的。这里与主题稍有关联。

控制台中打印的值只不过是最后一次操作的输出。。尝试
x=x+2,name=100。。这会给你更好的想法。是的,我更关心的是,输出本身如何在内存中计算(与变量相关)。基本上是想了解控制台返回的是什么,只是想更好地了解JS的内部情况。这更像是REPL而不是JavaScript。。我认为这个问题更多的是关于Chrome开发工具的…@SamiKuhmonen,刚在REPL上搜索并阅读了一下,听起来你很在行。将添加到标签中,谢谢!不,没有引起混乱!我现在正在学习的课程实际上很好地解释了窗口部分,
this.x
也很有效:)——尽管我在寻找JS如何在内存中“处理”变量,比如返回值,但它到底从哪里来?