ColdFusion 10不会抛出任何错误,但ColdFusion 8会抛出任何错误

 手机用户2502934787 发布于 2023-02-11 08:03

对不起,这是我能想到的最好的标题.

我希望这里有人可以给我一个解释这个行为.我的雇主刚决定将CF 8升级到CF 10(是的,我知道).但是,有些服务器在CF 10上,有些服务器在CF 8上.我知道它不应该是这样的; 但这不在我的掌控之中.无论如何,我有以下代码.它在CF 8中断,但在CF 10中无错误地工作.在CF 8中,它表示元素a没有在本地定义,这是预期的,我没有问题.毕竟,local声明了两次,而第二次没有定义a.

但是在CF 10中,没有生成错误,函数返回local.a. 对我来说,CF 10应该抛出错误,因为CF 8失败的原因相同,或者因为"local"是CF 10中的保留字(CF 9中引入了"local").为什么CF 10不会抛出任何错误?




var local = StructNew();
local.a = 1;











Adam Cameron.. 6

有些人无视任何理智的人会认为是常识,ColdFusion 9(以及相应的10)已被硬编码以忽略这一陈述:

local = structNew();

要么:

local = {};

这是为了向local旧版CF中传统上用作伪本地范围的人提供"向后兼容" .

Adobe是故意这样做的,信不信由你.

您可以通过在cflive.net上运行此代码来证明这一点:

function f(){
    var local = {};

    local.a = "set at top";

    local = {};

    writeDump(var=local);
}

f();

为了交叉兼容性,Railo,祝福他们,在这里遵循ColdFusion的主导.

Adobe在这里做了一件非常愚蠢的事情,现在我们一直坚持下去.但这就是为什么你看到你所看到的.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有