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