2017-05-03 1 views
1

Ich habe diesen Code:Warum erhalte ich ReferenceError: _variable ist nicht definiert?

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; 
    }, 
    ... 
    } 
} 

Fehler Ich erhalte ist:

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

Es ist richtig oben definiert sind. Warum der Fehler? Bitte erkläre.

Antwort

2

Weil es nicht existiert. Sie müssten es einer Variablen außerhalb des Objekts zuweisen. Sie könnten sw.photoswipe.settings._pixelRatio außerhalb des Objekts verwenden, aber innerhalb des Objekts ist es noch nicht vorhanden, bis das Objekt erstellt wird.

Versuchen Sie die Variable vor dem Objekt zu erstellen:

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; 
     }, 
     ... 
    } 
} 
Verwandte Themen