我有一种情况,我在重构一些代码 - 我在循环中分离了很多代码并将其放入一个组件中,每个活动都是一个方法,所有这些都被称为w / ia循环。
当它运行时 - 第二次通过循环,它无法解析a.id - 在行" var b = b(i,a.id);"
如果我在每一行都执行writeOutput(),我会在循环开始和每一行看到我的val,直到最后一次。
function a() {
//do thing
return id;
}
function b() {
//do thing
return id;
}
function bigOne() {
for( var i=1; i<2; i++; ) {
var a = a( i );
var b = b( i, a.id );
}
}
我也尝过这个 - 同样的问题
function bigOne() {
var a = '';
var b = '';
for( var i=1; i<2; i++; ) {
a = a( i );
b = b( i, a.id );
}
}
我已经读过Coldfusion, The symbol you provided [method_name] is not a function了 - 但这不是一回事,这篇文章是关于吸气者和制定者......我不认为这适用于我的问题
如果我按照这样输出我的输出(&#39;请参阅&#39;它):
function bigOne() {
var loopcount = 1;
for( var i=1; i<2; i++; ) {
writeOutput( 'loop count = ' & loopcount );
var a = a( i );
writeoutput( 'a.id = ' & a.id );
var b = b( i, a.id );
}
}
我明白了:
loop count = 1
a.id = 52978
loop count = 2
然后错误。错误MSG:实体具有不正确的类型,可以作为函数调用。 您提供的符号insStop不是函数的名称。
答案 0 :(得分:7)
函数由引用指向,就像变量一样,所以当你这样做时:
a = a();
您正在使用从其返回的值覆盖指向函数a
的引用。因此,下次您尝试调用a()
时,a
ia不再是您的函数,它是上次调用它时返回的值。
如果您在某个变量行中出现错误而无法按照您希望的方式使用它... 将其转储并查看其中包含的内容。这通常会指出你正确做错的方向。
答案 1 :(得分:0)
为了支持Adam所说的内容,您可以通过在函数中定义变量来避免这种情况。默认情况下,未结合的变量放在&#34;变量&#34;范围,这适用于在同一模板中调用的函数。因此,您可以将其范围限定为&#34; local&#34;而不是命名您的函数var&#34; loopcount&#34;范围即
var local.loopcount = 1
这将使函数var仅属于函数,因此不受函数外部发生的任何事件的影响,反之亦然。