I would love some feedback here from Adobe on whether or not this is a bug. If so, I will definitely report it but wanted to start here in the forums. Take a look at the cfscript code below:
array = [ {key1: "myKey"} ];
idx = 1;
tmp = array[idx];
writeDump( var=(array[1].key1 ?: ""), label="Prints 'myKey'" );
writeDump( var=(tmp.key1 ?: ""), label="Prints 'myKey'" );
writeDump( var=(array[idx].key1 ?: ""), label="Prints '[Empty String]'" );
The gist of what I am doing here is using the "elvis" operator to try and evaluate an object in realtime, and if the object cannot be evaluated, providing a default of an empty string. If you run this code, you will see that the first 2 methods of referencing array index 1 evaluate correctly and output my text but the 3rd does not. I realize that it would be better to check for the existence of a structure key explicitly but I am trying to use this approach for a massive refactor of some legacy code. It is stumping me as to why the 3rd method does not work so any input here would be greatly appreciated. As mentioned in the topic, I am using ColdFusion 11.
Thanks,
Micah