让我们逐步分解您的代码。
[1,4,5,6,7,2,3]
这是一个数组字面量。也就是说,写[1,4,5,6,7,2,3] 有点像写new Array(1,4,5,6,7,2,3)。简而言之,数组字面量计算为具有所描述内容的新数组。
[1,4,5,6,7,2,3]["sort"]
现在这一点很有趣,因为知道[] 创建数组字面量让我们认为["sort"] 也是一个数组字面量。不完全是 - 这是一个 Javascript 括号表示法 的示例,我们使用语法 someObject["propertyName"] 访问前面对象的属性,相当于 someObject.propertyName。查看this SO answer for more info on bracket notation。
所以我们知道Arrays、Array.sort、is a function 的sort 属性。写[1,4,5,6,7,2,3]["sort"] 就像写([1,4,5,6,7,2,3]).sort。为了调用一个函数,我们使用括号加上我们想要的参数:
[1,4,5,6,7,2,3]["sort"]();
这就像说([1,4,5,6,7,2,3]).sort();。
现在,在您的代码中,您已传入 0 作为 Array.sort 的参数。不过这个0其实对排序结果没有影响!这是因为数组的sort 方法采用optional comparison function。由于0 不是函数,Array.sort 将直接忽略它。事实上,在 Firefox 控制台中,运行 [1,4,5,6,7,2,3]["sort"](0); 会给我们一个 TypeError: invalid Array.prototype.sort argument。
综上所述,我们可以通过以下方式反转我们的结果:
[1,4,5,6,7,2,3]["sort"]()["reverse"]();
相当于:
([1,4,5,6,7,2,3]).sort().reverse();