首页 > 解决方案 > 如何将文本文件的内容读取为 Javascript?

问题描述

我想在javascript中编写一个读取文本文件的函数,如果它在该文本文件中包含任何 javascript 函数,那么我的函数不会将其作为文本读取,而是将作为 javascript 读取。

喜欢:

const toBeRead = () => true; //This function is in text file

上面的函数在文本文件中,我想将它作为 javascript 读取。目前我正在将其作为字符串阅读,但想从中获取输出,这是真的

编辑以获得更好的演示。这是我使用eval()后的功能

 function readSingleFile(evt) {
  var f = evt.target.files[0];
  if (f) {
    var r = new FileReader();
    r.onload = function (e) {
      var contents = e.target.result;
      var ct = r.result;
      var words = ct.split("\n");
      let array = [];
      words.map((word) => {
        if (word.substring(0, 6) === "const ") {
          if (word.includes("=>")) {
            if (word.includes("=")) {
              alert(word);       //It shows const toBeRead=()=>true;
              alert(eval(word)); // It shows undefined
              array.push(word);
            }
          }
        }
        return array;
      });
      alert(array);
    };
    r.readAsText(f);
  } else {
    alert("Failed to load file");
  }
}

实际上,我正在为编码约定创建一个规则,例如如果函数返回布尔值,那么它应该以“is/has”开头。像 const isFuncTrue=()=>true; 没有在 Eslint 中定义规则!

标签: javascripttext-fileseslintfilereadertextreader

解决方案


两种方法

  1. eval(jsstr)- 不建议
  2. 脚本:

浏览器中的示例 - 如果没有 DOM,则不会运行

const str = `const toBeRead = () => true; //This function is in text file`
const scr = document.createElement("script")
scr.textContent = str;
document.body.appendChild(scr)
console.log(toBeRead())


推荐阅读