Javascript函数全局变量未定义?

时间:2017-09-26 16:13:04

标签: javascript function global-variables

我想创建一些仪表,但我的Gauge对象仍未定义。

var doesntwork;
function create_gauge(name, id,  min,  max,  title,  label) {
  name = new JustGage({
    id: id,
    value: 0,
    min: min,
    max: max,
    donut: false,
    gaugeWidthScale: 0.3,
    counter: true,
    hideInnerShadow: true,
    title: title,
    label: label,
    decimals: 2
  });
}
create_gauge(doesntwork, "g2", 0, 100, "Füllstand", "%");
console.log(doesntwork); //undefined

为什么呢?我不能将变量传递给函数吗?

1 个答案:

答案 0 :(得分:5)

不,你只传递值,而不是变量引用或指针。

对于这个简单的例子,返回似乎更合适。

var works;
function create_gauge(id,  min,  max,  title,  label) {
  return new JustGage({
    id: id,
    value: 0,
    min: min,
    max: max,
    donut: false,
    gaugeWidthScale: 0.3,
    counter: true,
    hideInnerShadow: true,
    title: title,
    label: label,
    decimals: 2
  });
}
works = create_gauge("g2", 0, 100, "Füllstand", "%");
console.log(works);

但是,我确信这可能过于简化了。有"参考类型"在JS中,所以如果works持有一个对象,你可以传递对象引用的值并让函数填充对象的属性。

var works = {};
function create_gauge(obj, id,  min,  max,  title,  label) {
  obj.data = new JustGage({
    id: id,
    value: 0,
    min: min,
    max: max,
    donut: false,
    gaugeWidthScale: 0.3,
    counter: true,
    hideInnerShadow: true,
    title: title,
    label: label,
    decimals: 2
  });
}
create_gauge(works, "g2", 0, 100, "Füllstand", "%");
console.log(works.data);