编程与类型系统
上QQ阅读APP看书,第一时间看更新

1.1 为什么存在类型

在低层的硬件和机器代码级别,程序逻辑(代码)及其操作的数据是用位来表示的。在这个级别,代码和数据没有区别,所以当系统误将代码当成数据,或者将数据当成代码时,就很容易发生错误。这些错误可能导致系统崩溃,也可能导致严重的安全漏洞,攻击者利用这些漏洞,让系统把他们的输入数据作为代码执行。

JavaScript的eval()函数就是宽松解释代码的一个例子,它将一个字符串视为代码执行。当提供给该函数的字符串是有效的JavaScript代码时,它的效果很好,但是如果提供的字符串不是有效的JavaScript代码,就会导致运行时错误,如程序清单1.1所示。

程序清单1.1 试图将数据解释为代码