在ColdFusion中,哪个更有效?
isDefined('url.myvar')
要么
structKeyExists(url, 'myvar')
最佳答案
这些天(CF8 +)的速度差异不是很大。但是,structKeyExists
确实更快一些。这就是为什么。
当您使用isDefined
时,将在多个范围中将您传入的字符串作为键名进行搜索。从CF9开始,作用域列表按检查顺序为:(source)
即使将作用域名称与
isDefined
一起使用(如if isDefined('variables.foo')
),列表也将按顺序检查;如果定义了local.variables.foo
变量,则可以在variables.foo
之前找到它。另一方面,
structKeyExists
仅在传递给它的结构中搜索键名的存在;因此需要寻找的地方要少得多。通过使用更明确的代码(
structKeyExists
),不仅可以提高性能,而且我认为您的代码更具可读性和可维护性。关于performance - ColdFusion:效率更高的structKeyExists()而不是isDefined(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3956324/