Javascript函数全局变量undefined?

问题描述:

我想创建一些计量器,但是我的计量器对象保持未定义状态。Javascript函数全局变量undefined?

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 

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

+0

请,分享什么是'JustGage'以及 –

+4

原语是按值传递,而'doesntwork'是'undefined' - 一种原始的。所以如果你在函数中将它修改为'name',它对'doesntwork'变量没有影响。你为什么不直接从函数的'new JustGage'返回结果呢? –

+0

它是一个JavaScript插件来创建仪表。请参阅https://github.com/toorshia/justgage – tipsfedora

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

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

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); 
+0

谢谢,作品应该是。 – tipsfedora

+0

不客气。 – llama