2017-05-03 13 views
1

私はこのコードを持っている:私は取得していますなぜ私はReferenceError:_variableが定義されていないのですか?

sw = {} 
sw.photoswipe = { 
    settings: { 
    screenWidths: [1024, 1280, 1440, 1680, 1920, 2560, 2880, 3840], 
    screenHeights: [ 768, 800, 900, 1050, 1200, 1600, 1800, 2400], 

    _pixelRatio: window.devicePixelRatio || 1, 

    // this line is where the error happens 
    _screenWidth: window.screen.width * _pixelRatio, 

    _screenHeight: window.screen.height * _pixelRatio, 

    getScreenSizeDescription: function() { 
     return _screenWidth.toString() + 'x' + _screenHeight; 
    }, 
    ... 
    } 
} 

エラーは次のとおりです。

12:37:09.471 ReferenceError: _pixelRatio is not defined 1

それが適切上記で定義されています。なぜエラー?説明してください。

答えて

2

存在しないためです。オブジェクトの外側の変数に割り当てる必要があります。オブジェクトの外側にsw.photoswipe.settings._pixelRatioを使用できますが、オブジェクトの内部にはオブジェクトが作成されるまで存在しません。

オブジェクトの前に変数を作成してください:

var _pixelRatio = window.devicePixelRatio || 1; 
var sw = {} 
sw.photoswipe = { 
    settings: { 
     screenWidths: [1024, 1280, 1440, 1680, 1920, 2560, 2880, 3840], 
     screenHeights: [ 768, 800, 900, 1050, 1200, 1600, 1800, 2400], 

     _pixelRatio: _pixelRatio, 

     // this line is where the error happens 
     _screenWidth: window.screen.width * _pixelRatio, 

     _screenHeight: window.screen.height * _pixelRatio, 

     getScreenSizeDescription: function() { 
      return _screenWidth.toString() + 'x' + _screenHeight; 
     }, 
     ... 
    } 
} 
関連する問題