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
为什么?我不能将变量传递给函数吗?
答
不,你只传递值,而不是变量引用或指针。
对于这个简单的例子,返回似乎更合适。
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
请,分享什么是'JustGage'以及 –
原语是按值传递,而'doesntwork'是'undefined' - 一种原始的。所以如果你在函数中将它修改为'name',它对'doesntwork'变量没有影响。你为什么不直接从函数的'new JustGage'返回结果呢? –
它是一个JavaScript插件来创建仪表。请参阅https://github.com/toorshia/justgage – tipsfedora