以下代码将引发未定义的错误,“变量API未定义”:
public string function foo() {
var bar = "";
if (somecondition) {
var api = new some.path.to.component();
bar = api.baz();
}
return bar;
}
虽然以下内容可以正常运行:
public string function foo() {
var bar = "";
var api = new some.path.to.component();
if (somecondition) {
bar = api.baz();
}
return bar;
}
尝试通过预定义变量解决它,显示它没有被重新分配,并将抛出“无法在类型为java.lang.String的对象上调用方法find”:
public string function foo() {
var bar = "";
var api = "";
if (somecondition) {
api = new some.path.to.component();
bar = api.baz();
}
return bar;
}
CF9.1错误?语言功能?显然,如果条件为真,我只想创建组件,所以虽然后者工作但感觉有点浪费。
答案 0 :(得分:3)
供参考:我在Coldfusion 9中测试了这个,我没有收到错误。我确实添加了一些组件内省和文件存在检查以进行优雅的错误处理
页面脚本
somecondition = true;
public string function foo() {
var bar = "unassigned";
if (somecondition) {
if(fileexists('/webroot/jquery/stackoverflow/test.cfc')){
var api = new webroot.jquery.stackoverflow.test();
var meta = GetMetaData(api);
if(IsStruct(meta)){
bar = api.test();
}
}
}
return bar;
}
WriteDump(var=foo());
的 test.cfc 强> 的
component displayname="test" output="false" {
public string function test(){
return 'foo test';
}
}
查看您的实际代码可能有助于找到问题。