在我们平时编写javascript代码时,有多少人曾思考过我们编写的代码是如何在计算机中被执行的呢?
当我们开发完成一份javascript代码后,浏览器将其编译(解析)为机器码,才能被计算机实际执行。所谓机器码,是cpu能直接解析和执行的代码。比如下面这段简单的javascript代码:
var a = 3; var b = 4; alert(a+b);
经过编译,cpu最终执行的就是一些列的机器码指令,大致如下:
1. 加载寄存器1,存储3 2. 加载寄存器2,存储4 3. 把寄存器1和寄存器2的值相加 4. 在屏幕上显示结果 5. 停止
我们可以看出,通过编译生成的机器码是由一系列cpu指令组成的,这些指令告诉cpu要执行什么操作。
javascript代码所生成的机器码,其实是cpu的指令集的一种表现形式。这也就是说,对于不同的cpu,其指令集也各有不同。因此,javascript代码在不同的平台上所生成的机器码也各有不同。
另外,由于javascript的特性,我们经常需要在代码运行时才决定要执行的具体操作。比如下面这段代码:
var a = 5; var b = parseInt(prompt("请输入一个整数:")); if(b >a) { alert("你输入的数大于" + a); } else { alert("你输入的数小于或等于" + a); }
这段代码中,用户输入的数b是在代码运行时被动态获取的。因此,在执行时,cpu需要根据b的具体值来判断要执行哪一段代码。这时,机器码中对应的指令就不是静态的了,而是动态变化的。
总之,在javascript代码被编译成机器码时,cpu会根据代码中的逻辑和语法规则,将其转换为一系列能被cpu所识别的指令。通过这些指令,cpu最终完成了我们要求的具体操作。