以下の関数を記述しました。私は画像の寸法を読んでから、それを元に戻す必要があります。最初のコールバックの後、画像のサイズを変更して保存するために計算したwidth
とheight
の値を使用します。私の変数は範囲外ですが、私はReferenceError: width is not defined
になります。これらの変数を正しくスコープして、resize
関数で使用できるようにするにはどうすればよいですか?あなたは、矢印機能を使用しています下の.size()
ラインに古いスタイルの無名関数を使用して、あなたのスコープを失う約束でこのJavascriptスニペットの正しい可変範囲は何ですか
function saveImage(image) {
return new Promise((resolve, reject) => {
gm(image.data).size(function(error, value) {
if (value.width > image.maxSize || value.height > image.maxSize) {
max = Math.max(value.width, value.height);
if (value.width == max) {
width = image.maxSize; height = null;
} else {
height = image.maxSize; width = null;
}
} else {
width = value.width; height = value.height;
}
})
.resize(width, height)
.write('./tmp/test.jpg', function(error, value) {
if (!error) console.log(error);
});;
});
}
ここで、 'width'と' height'はどこに定義されていますか?私は 'var width ... 'などをどこかで見ることを期待していますが、現在それらを参照するときには存在しません。 – sauntimo
@sauntimo if内部で' var'を使わずに定義されていない限り。 – Carcigenicate