gpt4 book ai didi

ColdFusion 2018 不会将 undefined 解释为空字符串

转载 作者:行者123 更新时间:2023-12-04 01:06:10 25 4
gpt4 key购买 nike

ColdFusion 服务器已更新到 ColdFusion 2018(从 ColdFusion 9 或 11)。

该服务器上最旧的应用程序之一包含如下代码:< cfif arguments[key] NEQ "">

以前,这似乎等同于isDefined("arguments.key")StructKeyExists(arguments, key) .

今天,尽管isDefined("arguments.key")是假的,StructKeyExists(arguments, key)也是负面的,<cfif arguments[key] NEQ "">失败,因为 arguments[key] 的行为不再像空字符串。事实上,< cfdump var="#arguments[key]#">显示“未定义”。

我能做些什么来避免在使用空字符串而不是 StructKeyExists 的地方更改代码吗? ?也许是 ColdFusion 服务器参数? (THIS.enableNullSupport 没有帮助)

最佳答案

ARGUMENTS 范围的括号表示法将始终为 所有版本的 Adob​​e ColdFusion 中不存在的键和值返回一个 undefined 值.

function f() {
return arguments[key];
}
f(); // returns undefined

function f() {
return arguments["key"];
}
f(); // returns undefined

function f() {
return arguments.key;
}
f(); // throws exception: Element KEY is undefined in ARGUMENTS

所有 3 种情况都应该抛出异常。这是不一致的,应视为错误。它可能只是为了向后兼容而保留。

无论如何,正如您已经注意到的那样:

// ACF 10
(undefined eq "") -> TRUE

// ACF 11
(undefined eq "") -> TRUE

// ACF 2016
(undefined eq "") -> TRUE

// ACF 2018
(undefined eq "") -> FALSE

// ACF 2021
(undefined eq "") -> TRUE

Adobe 在 ACF 2018 中引入了 NULL 支持并打破了这种行为。他们在 ACF 2021 中修复了它,但在 ACF 2018 中没有修复,这是 Adob​​e 的经典举措。

要么向 Adob​​e 报告此错误并希望获得更新(ACF 2018 的最后一次错误修复是在 2019 年 11 月完成的,祝你好运),要么通过不依赖于这种不可靠的函数参数检查来修复你的旧应用程序。

关于ColdFusion 2018 不会将 undefined 解释为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66387940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com