我昨天正在处理一个简单的任务,只需要对几个下拉菜单中的值求和,以通过Javascript显示在文本框中。出乎意料的是,它只是在构建一个字符串,所以它没有给我值 4,而是给了我"1111"。我明白发生了什么;但我不明白怎么做。
使用像Javascript或PHP这样的松散类型语言,计算机如何"知道"将某些东西视为哪种类型?如果我只是将所有内容键入为var
,它如何区分字符串、int 和对象?
+
运算符在 Javascript 中将执行的操作是在运行时确定的,当实际参数(及其类型)都已知时。
如果运行时看到其中一个参数是字符串,它将执行字符串串联。否则,它将进行数字加法(如有必要,将参数强制为数字)。
此逻辑被编码到+
运算符(或任何其他类似函数)的实现中。如果你看一下它,你会看到if typeof(a) === 'string'
语句(或非常相似的东西)。
如果我只是将所有内容键入为 var
好吧,你根本不输入它。变量没有类型,但最终出现在该变量中的任何实际值都有类型,代码可以检查该类型。