松散类型的语言如何知道如何处理不同的数据类型?

时间:2016-05-27 12:16:27

标签: loose-typing

我昨天正在处理一项简单的任务,只需将少数几个下拉菜单中的值相加,即可通过Javascript显示在文本框中。出乎意料的是,它只是在构建一个字符串,而不是给我4值,它给了我“1111”。我明白发生了什么事;但我不明白如何

使用松散类型的语言(如Javascript或PHP),计算机如何“知道”处理某种类型的内容?如果我只是将所有内容输入为var,它如何区分字符串与对象的int?

1 个答案:

答案 0 :(得分:1)

+运算符在Javascript中的作用是在运行时确定的,当两个实际参数(及其类型)都已知时。

如果运行时发现其中一个参数是一个字符串,它将执行字符串连接。否则它将进行数字加法(如果需要将参数强制转换为数字)。

此逻辑被编码到+运算符(或任何其他类似函数)的实现中。如果你看了它,你会看到if typeof(a) === 'string'语句(或类似的东西)。

  

如果我只输入var

嗯,你根本不打字。变量没有类型,但是在该变量中结束的任何实际值都有一个类型,代码可以检查它。