我昨天正在处理一项简单的任务,只需将少数几个下拉菜单中的值相加,即可通过Javascript显示在文本框中。出乎意料的是,它只是在构建一个字符串,而不是给我4值,它给了我“1111”。我明白发生了什么事;但我不明白如何。
使用松散类型的语言(如Javascript或PHP),计算机如何“知道”处理某种类型的内容?如果我只是将所有内容输入为var
,它如何区分字符串与对象的int?
答案 0 :(得分:1)
+
运算符在Javascript中的作用是在运行时确定的,当两个实际参数(及其类型)都已知时。
如果运行时发现其中一个参数是一个字符串,它将执行字符串连接。否则它将进行数字加法(如果需要将参数强制转换为数字)。
此逻辑被编码到+
运算符(或任何其他类似函数)的实现中。如果你看了它,你会看到if typeof(a) === 'string'
语句(或类似的东西)。
如果我只输入var
嗯,你根本不打字。变量没有类型,但是在该变量中结束的任何实际值都有一个类型,代码可以检查它。