Hi
For looks, they are references via item() not items(), usually when you reference something inside its item, from outside its items()?['ColumnName']
The internal is just a pointer reference to the current iteration, in the back end it knows what index its on and therefor automatically gives you the proper indexed value (remember its an array you are iterating through).
If you wanted to specifically references a specific instance of the array it would be more like (and not in a loop)
outputs('My_List)_Rows)_Action')?[body/value]?[0-HowManyInstancesYouHaveMinus-1]?['FieldName']
Where the above is referencing a specific instance of the Outputs starting at index 0 of the outputs json body/value reference
you only need to type the whole you, you asked about when you are referrencing it outside of itself
Example (think of it like this)
List Rows
ForEach (outputs('List_Rows'))
(
Compose (grab a value) item()?['AColumnName']
ForEach_1(items('ForEach')?['ArrayColumnInTheOutterForEach']
Compose_1 = item()?['GrabsFromForEach_1Automatically']
Compose_2 = items('ForEach')?['ArrayColumnInTheOutterForEach']
)
Thats how.
Also to point out, there if you are using a Select or a Filter Array Action, they expect you to reference item() in your fields, NOT items() as even though you didn't specifically create a loop, soon as you added an Input, which is an Array of things, it simply internally tracks it as a set of things and therefor consider it the "only loop" and therefor uses item() not items()