JavaScript—使用V8编译了多少代码?

JavaScript—使用V8编译了多少代码?,javascript,v8,interpreter,jit,Javascript,V8,Interpreter,Jit,对于使用v8javascript引擎(JIT编译)的浏览器,有多少代码实际上被编译成机器代码并直接执行?它是挑选位还是编译整个JavaScript 另外,在编译代码的执行过程中,如果在JavaScript中为对象分配函数,会发生什么情况?在典型的语言中,这是非法的,但我认为JavaScript中的这种灵活性来自这样一个事实,即它被解释为在技术上不执行非法操作?但如果它被编译了,那么在这种情况下会发生什么呢 附言 对不起,我的意思是,如果这些变量是在别处声明的,那么编译后的代码是“myObject

对于使用
v8javascript引擎(JIT编译)
的浏览器,有多少代码实际上被编译成机器代码并直接执行?它是挑选位还是编译整个
JavaScript

  • 另外,在编译代码的执行过程中,如果在
    JavaScript
    中为对象分配函数,会发生什么情况?在典型的语言中,这是非法的,但我认为
    JavaScript
    中的这种灵活性来自这样一个事实,即它被解释为在技术上不执行非法操作?但如果它被编译了,那么在这种情况下会发生什么呢

  • 附言


    对不起,我的意思是,如果这些变量是在别处声明的,那么编译后的代码是“myObject=myFunction”执行的。这是合法的转让吗


    非常感谢。

    在javascript中执行代码时,您不能编辑代码。像这样测试:在函数的e中插入一段yoir javascript代码,然后尝试编辑它。抱歉,我的意思是,如果这些变量是在别处声明的,那么编译后的代码是“myObject=myFunction”执行的。这是合法的赋值吗?你认为这个赋值与编译有什么关系?我想这会破坏程序,因为使用“myObject”的东西现在实际上正在访问一个函数,如果它是编译的而不是解释的,那么解释器就无法捕捉到这样的问题(基本上忽略它们),如果这有意义的话?也许我想错了。v8的编译是一个优化步骤。因为在JS中,对象总是通过引用传递的,如果你以某种方式取消引用并用不同的值覆盖对象-是的,你的程序会有不同的行为,但这不会破坏v8或它的编译。你的脚本t可能会在某个地方抛出一个错误,因为您将拥有其他对象而不是对象。