使用另一个函数中的变量

use variable from another function

本文关键字:变量 函数 另一个      更新时间:2023-09-26

如何在一个函数中使用另一个函数中的变量? 我知道这已经被问过和回答了,但我无法将这些解决方案应用于我的特定代码。 在不使用全局变量的情况下访问其他函数中的变量 如何获取跨多个函数返回的变量 - Javascript/jQuery 我在 https://github.com/icatcher-at/MP3RecorderJS 使用一个名为 MP3RecorderJS 的库。 在演示 html 页面上是以下代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>MP3 Recorder test</title>
</head>
<body id="index" onload="">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="mp3recorder.js"></script>
<script type="text/javascript">
var audio_context;
function __log(e, data) {
  log.innerHTML += "'n" + e + " " + (data || '');
}
$(function() {
  try {
    // webkit shim
    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    navigator.getUserMedia = ( navigator.getUserMedia ||
                     navigator.webkitGetUserMedia ||
                     navigator.mozGetUserMedia ||
                     navigator.msGetUserMedia);
    window.URL = window.URL || window.webkitURL;
    var audio_context = new AudioContext;
    __log('Audio context set up.');
    __log('navigator.getUserMedia ' + (navigator.getUserMedia ? 'available.' : 'not  present!'));
  } catch (e) {
    alert('No web audio support in this browser!');
  }
  $('.recorder .start').on('click', function() {
    $this = $(this);
    $recorder = $this.parent();
    navigator.getUserMedia({audio: true}, function(stream) {
      var recorderObject = new MP3Recorder(audio_context, stream, { statusContainer:  $recorder.find('.status'), statusMethod: 'replace' });
      $recorder.data('recorderObject', recorderObject);
      recorderObject.start();
    }, function(e) { });
  });
  $('.recorder .stop').on('click', function() {
    $this = $(this);
    $recorder = $this.parent();
    recorderObject = $recorder.data('recorderObject');
    recorderObject.stop();
    recorderObject.exportMP3(function(base64_mp3_data) {
      var url = 'data:audio/mp3;base64,' + base64_mp3_data;
      var au  = document.createElement('audio');
      au.controls = true;
      au.src = url;
      $recorder.append(au);
      recorderObject.logStatus('');
    });
  });
});
</script>
<div class="recorder">
  Recorder 1
  <input type="button" class="start"  value="Record" />
  <input type="button" class="stop" value="Stop" />
  <pre class="status"></pre>
</div>
<div class="recorder">
  Recorder 2
  <input type="button" class="start"  value="Record" />
  <input type="button" class="stop" value="Stop" />
  <pre class="status"></pre>
</div>
<pre id="log"></pre>
</body>
</html>

在第 56 行,有变量 var url = 'data:audio/mp3;base64,' + base64_mp3_data;

如果我写一个新函数,比如:

function testing() {
console.log(url)
}

如何将 var url 放入我的"测试"函数中? 为了让它工作,我做了一个隐藏的div,做了innerhtml相等的var url,然后在我的第二个函数中引用了那个div。 但这似乎很黑客。

只需在函数外部声明变量,如下所示:

var url;

然后,当您更新函数

中的变量时,其值将简单地更新,并且它将可用于其他函数。

var hello;
function changeVar() {
  hello = 'hello';
}
function displayVar() {
  alert(hello);
}
<button onclick="changeVar()">Change the variable to "hello"</button>
<br/>
<button onclick="displayVar()">Display the variable's value</button>