关于CFScript的ColdFusion 9和ColdFusion 7之间是否具有向后兼容性?

4

我是一名完全不懂ColdFusion的新手,因此在此预先为我的无知道歉。

我们遇到了一个现有CFScript的问题。有问题的脚本包含以下行:

...
if (fields.length() != 0) {
    // do something
}
...

脚本在 ColdFusion 9 中成功运行,但是当我们尝试在 ColdFusion 7 中运行脚本时,出现以下消息:
...
Invalid token '!' found on line...
...

我猜测ColdFusion 7不支持'!='运算符,我的猜测正确吗?
如果是这样,是否还有其他与CFScript向后兼容的问题可能会导致我们出错?我一直在搜索资源,但似乎没有什么确定性的东西。
谢谢。
2个回答

8
是的,在CF7中,您需要使用ColdFusion的本地比较运算符,在您的情况下使用neq
用以下内容替换:
- ==eq替换 - !=neq替换 - >gt替换 - <lt替换 - >=gte替换 - <=lte替换 - %mod替换
除此之外,
- 您需要在ColdFusion 7函数的顶部分组所有本地变量(使用var声明的变量)。这个限制在后来的ColdFusion版本中消失了,但以这种方式编写的脚本当然仍将继续运行。 - 自动的local作用域在CF9中可用。这个作用域在CF7和CF8中不可用,但是按照惯例,人们在他们的CF7函数顶部添加了一个var local = StructNew();,这也适用于CF>7。

隐式本地作用域在CF9中而不是CF8中。 - bittersweetryan
@bittersweetryan:啊,谢谢你的提示!我已经相应地更新了我的答案。 - Tomalak

1

你说得对 - 类似Javascript的运算符(!=,==,||等)只在ColdFusion 9中引入,同时还有更多的脚本支持。

这主要涉及CFC的完整脚本支持,但可能还有很多其他需要注意的地方...


1
它们在CF8中被引入。 :) - Tomalak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接