-1

他の誰かのコードのコピー エンジニアリングに基づいて、次のコードを作成しました (こちらのフィドルを参照してください)。

//INITIAL DATA:
var geometry.id = "Norway";
var bounds = [[-5, 40], [10, 50]];

// START CALCULATIONS
// WNES for West, North, East, South.
// WNES borders' geo-coordinates (decimal degrees) 
var WNES = "",
    WNES.item = geometry.id,
    WNES.W = bounds[0][0],
    WNES.N = bounds[1][1],
    WNES.E = bounds[1][0],
    WNES.S = bounds[0][1];
// Area's geo-dimensions (decimal degrees)
var WNES.geo_width = (WNES.E - WNES.W),
    WNES.geo_height = (WNES.N - WNES.S);
// add a 5% padding on all WNES sides.
var WNESplus.W = WNES.W - WNES.geo_width * 0.05,
    WNESplus.N = WNES.N + WNES.geo_height * 0.05,
    WNESplus.E = WNES.E + WNES.geo_width * 0.05,
    WNESplus.S = WNES.S - WNES.geo_height * 0.05,
    WNESplus.geo_width = (WNESplus.E - WNESplus.W),
    WNESplus.geo_height = (WNESplus.N - WNESplus.S);
// calcul center geo-coordinates
var WNES.lat_center = (WNES.S + WNES.N) / 2,
    WNES.lon_center = (WNES.W + WNES.E) / 2;

//TEST:
console.log("Test" + WNESplus.N + " and " + WNESplus.geo_width);

これは完全に失敗します。代入とセミコロンの使い方が間違っているようです。私の間違いは何ですか、適切に処理する方法は?

4

4 に答える 4

2

varローカル変数の宣言に使用されます。これを使用してオブジェクト プロパティを「宣言」するのは正しくありません。

次のようなことをするだけです:

WNES.geo_width = (WNES.E - WNES.W);
WNES.geo_height = (WNES.N - WNES.S);

つまり、プロパティをリテラル文字列に割り当てようとしているようです。これは機能しません。あなたはおそらく次のことから始めるべきです:

var WNES = {};
于 2013-09-26T12:44:10.143 に答える
1

オブジェクトを作成せずにプロパティを設定しています。変数宣言ではドット表記を使用できません。

以下を試してください:

//INITIAL DATA:
var bounds = [[-5, 40], [10, 50]];
var geometry = {};
geometry.id = "Norway";

// START CALCULATIONS
//  WNES borders' geo-coordinates (decimal degrees for West, North, East, South borders) 
var WNES = {};
WNES.item = geometry.id,
WNES.W = bounds[0][0],
WNES.N = bounds[1][1],
WNES.E = bounds[1][0],
WNES.S = bounds[0][1];
// Area's geo-dimensions (decimal degrees)
WNES.geo_width = (WNES.E - WNES.W), 
WNES.geo_height = (WNES.N - WNES.S);
// add a 5% padding on all WNES sides.
var WNESplus = {};
WNESplus.W = WNES.W - WNES.geo_width * 0.05,
WNESplus.N = WNES.N + WNES.geo_height * 0.05,
WNESplus.E = WNES.E + WNES.geo_width * 0.05,
WNESplus.S = WNES.S - WNES.geo_height * 0.05,
WNESplus.geo_width = (WNESplus.E - WNESplus.W),
WNESplus.geo_height = (WNESplus.N - WNESplus.S);
// calcul center geo-coordinates
WNES.lat_center = (WNES.S + WNES.N) / 2,
WNES.lon_center = (WNES.W + WNES.E) / 2;

console.log("Test"+ WNESplus.N +" and "+  WNESplus.geo_width);

jsフィドル

于 2013-09-26T12:47:54.437 に答える
1

この形式では、変数をオブジェクトとして宣言することはできません。ドット表記またはオブジェクトを含むものはすべて、var something = {} として宣言する必要があります。そして例として:

これgeometry.id = "Norway";は100%失敗します。ただし、次のように宣言できます。

var geometry = { id: "Norway"};他のものについても同じテンプレートに従います。

于 2013-09-26T12:53:40.687 に答える
1

var を使用してオブジェクト ( geometryWNES、 )のプロパティを割り当てることはできません。WNESplus最初にそれらをオブジェクトとして初期化し、次にプロパティを割り当てる必要があります。

//INITIAL DATA:
var bounds = [[-5, 40], [10, 50]];
var geometry = {};
geometry.id = "Norway";

// START CALCULATIONS
//  WNES borders' geo-coordinates (decimal degrees for West, North, East, South borders) 
var WNES = {};
WNES.item = geometry.id;
WNES.W = bounds[0][0];
WNES.N = bounds[1][1];
WNES.E = bounds[1][0];
WNES.S = bounds[0][1];
// Area's geo-dimensions (decimal degrees)
WNES.geo_width = (WNES.E - WNES.W);
WNES.geo_height = (WNES.N - WNES.S);
// add a 5% padding on all WNES sides.
var WNESplus = {};
WNESplus.W = WNES.W - WNES.geo_width * 0.05;
WNESplus.N = WNES.N + WNES.geo_height * 0.05;
WNESplus.E = WNES.E + WNES.geo_width * 0.05;
WNESplus.S = WNES.S - WNES.geo_height * 0.05;
WNESplus.geo_width = (WNESplus.E - WNESplus.W);
WNESplus.geo_height = (WNESplus.N - WNESplus.S);
// calcul center geo-coordinates
WNES.lat_center = (WNES.S + WNES.N) / 2;
WNES.lon_center = (WNES.W + WNES.E) / 2;

console.log("Test " + WNESplus.N + " and " + WNESplus.geo_width);

これがworkign jsFiddleです

于 2013-09-26T12:49:12.703 に答える