最近我看到一个函数,其中的参数被加号运算符和引号包围,如下所示:
function foo(elemId, a, interval) {
// Some logic here;
// Basically some animation logic
// Recursive
var repeat = "foo('"+elemId+"', '"+a+"', '"+interval+"')";
setTimeout(repeat, interval);
}
这里 elemId 是一个字符串类型,a
可以interval
是任何东西(假设取整数)。
在两边加上引号的目的是什么?
编辑:我知道如果它是这样的字符串,则字符串之前的单加运算符会将其转换为数字,"33"
否则将转换为NaN
. 但在这种情况下,不能将其转换为数字,因为elemId
这里只是元素的 id。
编辑2:为什么我们不能像这样直接将函数传递给setTimeout:
setTimeout(foo, interval);