Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
coldfusion-实体作为函数调用的类型不正确_Coldfusion - Fatal编程技术网

coldfusion-实体作为函数调用的类型不正确

coldfusion-实体作为函数调用的类型不正确,coldfusion,Coldfusion,我有一种情况,我正在重构一些代码——我在一个循环中分离出许多代码并将其放入一个组件中,每个活动都是一个方法,都称为w/I循环 当它第二次通过循环运行时,它在“varb=b(i,a.id);”行解析a.id失败 如果我在每一行执行writeOutput(),我会在循环的开始和每一行看到VAL,直到最后一次 function a() { //do thing return id; } function b() { //do t

我有一种情况,我正在重构一些代码——我在一个循环中分离出许多代码并将其放入一个组件中,每个活动都是一个方法,都称为w/I循环

当它第二次通过循环运行时,它在“varb=b(i,a.id);”行解析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 );
        }
    }
然后是错误。错误消息:实体作为函数调用的类型不正确。
在STOP中提供的符号不是函数名

函数通过引用指向,就像变量一样,因此当您执行此操作时:

a = a();
您正在用函数返回的值覆盖指向函数
a
的引用。因此,下次尝试调用
a()
a
ia不再是您的函数时,它是上次调用它时返回的值


当您在变量行中遇到错误时,无法按您希望的方式使用它。。。把它倒出来,看看里面有什么。这通常会为您指出错误所在的正确方向。

函数由引用指向,就像变量一样,因此当您执行此操作时:

a = a();
您正在用函数返回的值覆盖指向函数
a
的引用。因此,下次尝试调用
a()
a
ia不再是您的函数时,它是上次调用它时返回的值


当您在变量行中遇到错误时,无法按您希望的方式使用它。。。把它倒出来,看看里面有什么。这通常会为您指出错误所在的正确方向。

为了支持Adam的说法,您可以通过在函数中确定变量的范围来避免这种情况。默认情况下,未作用域的变量放在“variables”范围内,这适用于在同一模板内调用的函数。因此,您不必将函数var命名为“loopcount”,而是可以将其范围限定为“local”范围,即

var local.loopcount = 1 

这将使函数var只属于函数,因此不受函数外部发生的任何事情的影响,反之亦然

为了支持Adam所说的,您可以通过在函数中确定变量的范围来避免这种情况。默认情况下,未作用域的变量放在“variables”范围内,这适用于在同一模板内调用的函数。因此,您不必将函数var命名为“loopcount”,而是可以将其范围限定为“local”范围,即

var local.loopcount = 1 

这将使函数var只属于函数,因此不受函数外部发生的任何事情的影响,反之亦然

由于
local
在CF9+中是一个完整的系统作用域,因此最好使用
var
local
-而不是两者都使用。由于
local
在CF9+中是一个完整的系统作用域,因此最好使用
var
local
-而不是两者都使用。
var local.loopcount = 1