函数后面的括号是什么意思:reverse[0]?

what is the meaning of brackets after function : reverse[0]?

我正在使用节点 v10.1,并且我有一个对象可以保留一些 MIME 类型,如下所示:

let all_mime_types = {
  //media types...

  text: "text/plain",
  html: "text/html",
  jpeg: "image/jpeg",
  jpg: "image/jpg",
  png: "image/png",
  javascript: "text/javascript",
  css: "text/css"
};

当我想使用一些代码(基于我在目录中引用的文件)访问其中一种 MIME 类型时,我看到了这段代码:

let mime =
        all_mime_types[
          path
            .extname(full_address)
            .split(".") // seperates the "." from path.extname(full_address);
            .reverse()[0]
        ];

我的问题是 .reverse()[0]部分 ...

当我删除 0 或 [0] 时,它 returns 未定义。

.reverse()[][0] 是什么意思?

  1. split(".") 将字符串作为输入,returns 数组作为输出
  2. reverse 获取数组并将其反转,顾名思义
  3. [0] 是数组的第一个元素,它又是原始数组的最后一个元素

因此,此代码的作用是将 "/path/to/file/some.txt"、returns 等字符串作为结果 "txt"

让我们改写这种不那么混乱的风格:

let file_path = path.extname(full_address)
let split_by_extension_path = file_path.split(".")
let reversed_path = split_by_extension_path.reverse()
let extension = reversed_path[0]
let mime = all_mime_types[extension]

请注意此代码存在多个问题。

首先,并不是所有的文件都有扩展名,也不是所有的文件扩展名都是正确的。
其次,您的 JavaScript 文件可能有 .js 扩展名,而不是 .javascript.text.txt 文件相同。