-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

不允许以这种格式将变量声明为对象。包含点符号或对象的所有内容都应声明为 var something = {}。作为一个例子:

geometry.id = "Norway";将 100% 失败。但是您可以将其声明为:

var geometry = { id: "Norway"};其他人也遵循相同的模板。

于 2013-09-26T12:53:40.687 回答
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);

jsFiddle

于 2013-09-26T12:47:54.437 回答
1

您不能使用 var分配对象 ( geometry, WNES, ) 的属性。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 回答