我的代码有一个函数声明
var string = function(){..}
稍后在代码中我将其用作
var value = function(){
...
string();
}
变量值在string之后定义。应该没有理由不将字符串识别为函数。
Plnkr:http://plnkr.co/edit/9tRZnIVlRkNadPXCKsla?p=preview
如果您只是运行plnkr,错误将显示在line 98
答案 0 :(得分:2)
问题出在第42行:你写了var hex, i, stirng = '';
而不是string
。修复变量名称,它将起作用!
事实上,在名为string
的函数中有一个名为string
的变量不是问题,因为有些人因为范围而声明。
在string
函数内,对string
的任何引用都将解析为内部变量string
,而不是函数。
答案 1 :(得分:0)
您的string
函数中有 42 的拼写错误:
41 var string = function() {
42 var hex, i, stirng = ''; // typo 'stirng' for 'string'
43
因此 53 ,string
指的是函数string
。当您尝试向其添加字符串ch
时,会将其强制转换为字符串。
52 } else {
53 string += ch; // the function string is coerced to string
54 }
然后当它在行 91 上调用时,string
该函数已被字符串替换(string.toString() + ch
的结果),导致错误{{1} }。