2017-07-21 3 views
0

以下の関数を記述しました。私は画像の寸法を読んでから、それを元に戻す必要があります。最初のコールバックの後、画像のサイズを変更して保存するために計算したwidthheightの値を使用します。私の変数は範囲外ですが、私は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); 
     });; 
    }); 
    } 
+2

ここで、 'width'と' height'はどこに定義されていますか?私は 'var width ... 'などをどこかで見ることを期待していますが、現在それらを参照するときには存在しません。 – sauntimo

+2

@sauntimo if内部で' var'を使わずに定義されていない限り。 – Carcigenicate

答えて

0

。私はuがES6の構文について学び、「聞かせて」使用する必要があります好む...あなたが適切にあなたの変数を定義する必要があり.size()

.size((error, value) => {}) 
1

のための矢印機能を使用してみてください、変数のための「CONST」と範囲は広い範囲でありすることができますありがとうございます: - @ ravi

関連する問題