我目前正在阅读John Resig JavaScript Ninja的书。在那里,他写道,函数具有可执行的"超能力"。
我不明白"可执行"是什么意思。
这是否意味着JavaScript解释器将存在的代码作为字符串转换为机器代码?然后由 CPU 执行哪个?但在这种情况下:其他数据也由 CPU 处理。区别在哪里?
有人能以一种非计算机科学毕业生可以理解的方式解释"可执行文件"一词吗?
我假设一个更简单的解释:这意味着可以调用一个函数(作为一个特殊对象),而一个对象通常可能不是。
var foo = function() {};
foo(); // call or "execute" it
var bar = {};
bar(); // TypeError: bar is not a function
从硬件和操作系统的POV来看,(不可执行的)数据和可执行指令是有区别的,但是像javascript这样的高级语言旨在使人们摆脱这些细节。
这意味着函数是 CPU 可以执行的一组指令。 与其他编程结构(如变量和对象)相比,它们只是保存数据,这有点特别。
擅长像JavaScript这样的语言,其中函数是对象。 "可执行"是特别的。
所以像这样成像。 a
是可变对象,这意味着它保存数据
a = 10
计算机知道a
具有10
值,但它不知道它是什么意思,也不知道该怎么处理它。另一方面,函数对象保存指令
function a(){do{...}while(b=10)}
计算机知道该怎么做。 它可以接受a
的指令并逐个执行。