首页 > 解决方案 > 如何在函数之外使用变量 - javascript

问题描述

我一直在寻找一种在函数之外获取变量的方法。这是我的代码片段。

for (var i = 0; i < results.length; i++) {
  var rawname = results[i].name
  var name = encodeURIComponent(results[i].name)
  var isdirectory = results[i].isDirectory
  var filesize = '""'
  //var modified = '10/13/15, 10:38:40 AM'
  var modified = ''
  var extension = name.split('.').pop();
  // raw, urlencoded, isdirectory, size, 
  if (extension == 'mp3' || extension == 'flac') {
    getEntryFile(results[i], function(file) {
      jsmediatags.read(file, {
        onSuccess: function(tag) {
          var image = tag.tags.picture;
          if (image) {
            var base64String = "";
            for (var i = 0; i < image.data.length; i++) {
              base64String += String.fromCharCode(image.data[i]);
            }
            var base64 = "data:" + image.format + ";base64," +
              window.btoa(base64String);
          }
        },
        onError: function(error) {
          console.log(error);
        }
      })
    })
    html.push('  {')
    html.push('    name: "' + rawname + '",')
    html.push('    artist: "' + rawname + '",')
    html.push('    image: "' + base64 + '",')
    html.push('    path: "' + name + '",')
    html.push('  },')
  }
}

我需要在 2 个函数之外获取 base64 变量并在html.push()函数中使用它。

请不要关闭这个问题。我已经在堆栈交换中搜索过类似的问题,但它们从未奏效。

我尝试的一种方法是使用声明一个窗口变量,window.base64a = base64但它只是返回未定义。我该怎么做才能让我的变量在函数之外?

标签: javascriptjavascript-objectsvar

解决方案


推荐阅读