Я пытаюсь получить ширину изображения, но он всегда не определяет. здесь является частью кодаjavascript переменная не работает должным образом
var w;
var _URL = window.URL || window.webkitURL;
var img = new Image();
img.src = _URL.createObjectURL(files[i]);
img.onload = function () {
w = this.width;
console.log(w); // works
};
console.log(w); // undefined
и я заметил, что последний журнал консоли в настоящее время называется первым, а не консоль внутри функции(), это правильное поведение? потому что я думал, что он вызовет функцию по строчке.
Если я ввожу 4 файла, результат будет равен 4 undefined
, а затем фактической ширине изображения.
onload называется асинхронно, когда изображение загружается ... w будет неопределенным до тех пор, пока это не произойдет, ваш код за пределами функции onload не дождитесь загрузки изображения –
@JaromandaX, так как я могу получить значение этого .width и использовать его за пределами onload – markoverflow
простой ответ, вы не можете, сложный ответ, научитесь использовать асинхронный код, используя либо обратные вызовы, либо обещания –