在CoffeeScript中,以下语句求值为以空字符串为前缀的JavaScript语句。
我觉得在类型安全方面存在一个边缘情况,但我无法想到这一点。在什么情况下前缀有所不同?
CoffeeScript的:
x = "#{foo} bar"
JavaScript的:
x = "" + foo + " bar";
答案 0 :(得分:1)
它确保表达式始终被评估为字符串,从而阻止表达式数字加法而不是连接。在字符串仅包含单个插值表达式的情况下,它还有效地将该表达式转换为字符串。几个例子:
x = 2
y = 3
typeof "#{x}" is string # true since this compiles to "" + x
str2 = "#{x}#{y}" # We want the string "23" here, not the number 5