【问题标题】:Backward compatibility between ColdFusion 9 and ColdFusion 7 with regards to CFScript?ColdFusion 9 和 ColdFusion 7 在 CFScript 方面的向后兼容性?
【发布时间】:2011-07-20 20:40:56
【问题描述】:

我是一个完整的 ColdFusion 新手,所以提前为我即将到来的无知道歉。

现有的 CFScript 存在问题。有问题的脚本包含以下行:

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

脚本在 ColdFusion 9 中成功运行,但我们在尝试在 ColdFusion 7 中运行脚本时看到以下消息:

...
Invalid token '!' found on line...
...

我猜 ColdFusion 7 不喜欢 '!=' 运算符,对吗?

如果是这样,CFScript 是否还有其他向后兼容性问题可能导致我们出错?我一直在寻找资源,但似乎没有什么确定的。

谢谢。

【问题讨论】:

    标签: coldfusion


    【解决方案1】:

    是的,在 CF7 中,您需要使用 ColdFusion 的本机比较运算符,在您的情况下为 neq

    替换

    • ==eq
    • !=neq
    • >gt
    • <lt
    • >=gte
    • <=lte
    • %mod

    你可以走了。这些算子都是向上兼容的,CF9会理解的。

    除此之外,

    • 您需要将所有局部变量(使用var 声明的变量)放在 ColdFusion 7 中的函数顶部。此限制在 ColdFusion 的后续版本中已消失,但编写的脚本这种方式当然会继续运行。
    • 自 CF9 起有一个自动的 local 范围。此范围在 CF7 和 CF8 中不可用,但按照惯例,人们在其 CF7 函数的顶部添加了一个 var local = StructNew();,这也适用于 CF > 7。

    【讨论】:

    • 隐式本地范围在 CF9 而不是 CF8。
    • @bittersweetryan:啊,谢谢你的提示!相应地更新了我的答案。
    【解决方案2】:

    您是对的 - 类似 Javascript 的运算符(!=、==、|| 等)仅在 ColdFusion 9 中引入,以及更多的脚本支持。

    这主要与对 CFC 的完整脚本支持有关,但可能还有很多其他问题......

    【讨论】:

    • 他们被介绍了in CF8。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 2012-02-13
    • 1970-01-01
    • 2013-05-08
    • 2011-09-20
    相关资源
    最近更新 更多