为什么把手使用点括号表示法来按索引访问数组?

时间:2016-08-25 16:32:31

标签: javascript arrays handlebars.js

Handlebars是一个JS库,为什么它需要一个点之前的数组索引值,如     data.array.[0] 代替     data.array[0]

2 个答案:

答案 0 :(得分:3)

方括号为“segment-literal notation”:

  

要引用不是有效标识符的属性,可以使用segment-literal表示法:

{{#each articles.[10].[#comments]}}
 <h1>{{subject}}</h1>
 <div>
   {{body}}
 </div>
{{/each}}

正如您所看到的,您使用方括号来“引用”可能在表达式路径中作为裸标识符存在问题的标识符,例如#comments。这类有问题的标识符还包括当它们位于路径末尾时作为整数的标识符(如数组索引所示);见this answer on How do I access an access array item by index in handlebars?

至于为什么当使用方括号语法来解决有问题的标识符时,他们根本没有完全取消点(例如,foo[#comments]),我不能肯定地说,但它确实看起来非常一致为了便于阅读,确保路径的各段始终以句点分隔。

答案 1 :(得分:0)

Handlebars.jsMustache库的增强版。我猜它会使用类似的语法来解析为Mustache所以这个点符号必须以某种方式来自那里。