js是怎么执行的?
1. 「解析器」解析源码
通过「词法分析」、「语法分析」
2. 生成「AST」(抽象语法树)
3. 「解释器」将AST翻译为「字节码」,然后「解释器」再将「字节码」解释成「机器码」,一边解释,一边执行
4. 如果遇到了运行次数多的代码,那么「解释器」就会标记这段代码为Hot code「热代码」,然后「编译器」会将「字节码」优化编译成「机器码」,下次遇到这段代码,「解释器」就可以直接执行这个「机器码」,不用再次解释
上面这种在运行时编译代码的技术叫做「即时编译」,英文就是我们常说的JIT(Just In Time),通过JIT极大提升了JavaScript的代码执行性能
首要概念:存储程序
「存储程序」是指将指令通过二进制代码的形式,事先输入计算机的主存储器,然后找到存储器中的首个地址,执行程序的第一条指令,之后,就按照规定的顺序执行其他指令,知道程序结束。
所以,所有的高级语言写的代码,最终都会有某一个东西(编译器或者解释器),将高级语言写的代码翻译成「机器码」(或者说「机器语言」)
然后,将「机器码」读入「主存储器」(也就是电脑的内存),然后通过「控制器」从「主存储器」中取出这些「机器码」交给「运算器」去执行。
现代计算机一般将「运算器」和「控制器」组成一个整体,这个整体就是我们说的「CPU」