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



我昨天正在处理一个简单的任务,只需要对几个下拉菜单中的值求和,以通过Javascript显示在文本框中。出乎意料的是,它只是在构建一个字符串,所以它没有给我值 4,而是给了我"1111"。我明白发生了什么;但我不明白怎么做

使用像Javascript或PHP这样的松散类型语言,计算机如何"知道"将某些东西视为哪种类型?如果我只是将所有内容键入为var,它如何区分字符串、int 和对象?

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

如果运行时看到其中一个参数是字符串,它将执行字符串串联。否则,它将进行数字加法(如有必要,将参数强制为数字)。

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

如果我只是将所有内容键入为 var

好吧,你根本不输入它。变量没有类型,但最终出现在该变量中的任何实际值都有类型,代码可以检查该类型。

最新更新