使用尖括号调用奇怪的复杂函数

时间:2014-06-05 08:58:18

标签: javascript brackets

我在这里阅读一些关于javascript的基础知识:

http://javascript.info/tutorial/array 我对以下段落感到震惊:

“请注意JavaScript如何允许复杂的语法,如:reverse()[0] - 调用方法,然后获取结果数组的元素。

实际上,您可以撰写较长的通话,例如reverse()<a href="/0%5D%5B1">0][1</a>[5]...,语言语法允许这样做。“

我尝试在线搜索function()<a的此类用法,但我找不到任何指导

我的问题是:

  • 我们可以在函数后直接使用角度braket,而不是字符串的一部分吗?

  • 我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

  

我们可以在函数后直接使用角度braket,而不是字符串的一部分吗?

是的,但它将是“小于”比较运算符。有效示例:

if (reverse() < 5) // this example assumes `reverse` returns something reasonably
                   // comparable with 5

这个引用的例子:

reverse()<a href="/0%5D%5B1">0][1</a>[5]...,
//          ^

...绝对是指示位置的语法错误。在此之前,它正在调用reverse,然后将结果与a(变量)进行比较,但后面跟href的空格毫无意义。

这篇文章都是废话,或者更有可能是它的标记搞砸了。

修改

Juhana在评论中指出它可能应该是

reverse()[0][1][5]

......这样做:

  • 致电reverse()
  • [0]应用于结果值(因此希望它是一个数组或具有名为"0"的属性的对象)
  • [1]应用于 结果值
  • [5]应用于 结果值

例如:

function reverse() {
    return [             // Outermost array
        [                // First nested array
            [],          // First entry in nested array (not used)
            [            // Second entry in nested array
                'a',
                'b',
                'c',
                'd',
                'e',
                'f',     // Index 5 of the innermost array
                'g'
            ]
        ]
    ];
}

console.log(reverse()[0][1][5]); // "f"