1

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

对于像 Javascript 或 PHP 这样的松散类型语言,计算机如何“知道”将某物视为什么类型?如果我只是将所有内容都输入为 a var,它如何区分字符串与 int 和对象?

4

1 回答 1

1

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

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

这个逻辑被编码到+操作符(或任何其他类似的函数)的实现中。如果您查看它,您会在其中看到if typeof(a) === 'string'语句(或非常相似的内容)。

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

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

于 2016-05-27T12:30:43.850 回答