从函数中的函数更改变量值

时间:2019-06-12 00:19:58

标签: javascript

function addMe() {
  var a = 2;
  var vid = document.createElement('video');
  vid.src = URL.createObjectURL(myFile.files[0]);
  vid.ondurationchange = function() {
    a = 7;
  };
  console.log(a);
}
<input type="file" id="myFile">
<button onclick="addMe()">Click</button>

我期望a的值为7,因为我已经使用vid.ondurationchange函数对其进行了更改。当我检查a内的vid.ondurationchange的值时,它是7,但是当我检查其外部的值时,它是2。由于vid.ondurationchange对于{{1}是局部的}函数,我想从addMe函数中更改a的值。

1 个答案:

答案 0 :(得分:0)

您的console.log立即运行,而无需等待ondurationchange发生。这就是为什么它记录初始值的原因。如果您需要检查该值实际上是否已更改,则您想在ondurationchange内使用该console.log(就像您提到的那样),因为那是新值实际可用的时候。