Javascript参数作为值和未定义形式返回

问题描述 投票:0回答:1

我正在尝试将对象传递给函数,以根据其中包含的值绘制图形。但是,当我将对象传递给函数时,javascript会将其读取为对象和未定义对象:

$(plot({pv : '1000', d : '20', n : '10'}));

highcharts.js:45 {pv: "1000", d: "20", n: "10"}
highcharts.js:47 object
highcharts.js:45 undefined
highcharts.js:47 undefined

然后,当我尝试访问data['pv']data.pv时,我得到:

TypeError: Cannot read property 'pv' of undefined
    at calculate (highcharts.js:55)

但是如果访问全局变量,它将运行平稳:

var obj = {pv : '1000', d : '20', n : '10'};

目前,我将脚趾浸入Javascript中,所以我确定对于该语言我尚不了解。任何帮助,将不胜感激。

这是我的其他丑陋代码供参考:

$(function () {
    $(plot({pv : '1000', d : '20', n : '10'}));
});

// Global variables
var pv = 0;
var r = 0.015;
var n = 0;
var d = 0;
var x = new Array();
var y = new Array();
var v = new Array();
var before = new Array();
var obj = {pv : '1000', d : '20', n : '10'};
    // Plot button
function plot(data) {
    // if (isValid()) {
        console.log(data);
        calculateBefore(data);
        calculate(data);
        plotValues();
    // }
};

function calculate(data) {
    console.log(data);
    // pv = Number($('#pv').val());
    console.log(typeof(data));


// obj = data['pv']; 
console.log(obj);
pv = Number(data['pv']); // Error appears on this line
// r = Number($('#r').val()) / 100;
r = 0.015;
// d = Number($('#d').val());
d = Number(data['d']);
var xmin = 0;
// var xmax = Number($('#n').val()) * 4;
var xmax = Number(data['n']) * 4;
var i = 0;
v = [];
for (xt = xmin; xt <= xmax; xt++) {
    x[i] = xt;
    y[i] = calculateY(pv, r, xt);
    v[i] = [x[i], y[i]];
    i++;
  }
n = i - 1;
}
javascript highcharts
1个回答
0
投票

似乎问题在于数据本身是未定义的,因此,如果尝试console.log(data),则会得到未定义的信息。函数中引用的数据是一个参数,因此您不能在函数范围之外访问它。

顺便说一句,您应该尽量避免使用全局变量和一般的var。您可以将const用于不会更改的变量,并将let用于您希望更改的变量。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.