Javascript函数全局变量未定义?
我想创建一些仪表,但仪表对象仍未定义Javascript函数全局变量未定义?,javascript,function,global-variables,Javascript,Function,Global Variables,我想创建一些仪表,但仪表对象仍未定义 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, hideInne
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);
不,只传递值,不传递变量引用或指针 对于这个简单的例子,返回似乎更合适
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);
请分享什么是
JustGage
,原语是按值传递的,doesnetwork
是未定义的
-原语。因此,如果在函数中将其修改为name
,则对doesnetwork
变量没有影响。为什么不从函数中返回new JustGage
的结果呢?这是一个用于创建量规的javascript附加组件。确实,不能将变量的引用传递给函数,只能传递值。您可以尝试,但实际上您应该遵循@KarlReid的建议,只需使用返回值即可。@KarlReid:一切都是“按值传递”。仅因为对象是引用类型值,并不意味着它们是“按引用传递”。“通过引用传递”的意思是:var a={};var b=a;b={};console.log(a==b)/*这在JavaScript*/
中是不正确的。请分享什么是JustGage
,原语是按值传递的,doesnetwork
是未定义的
-原语。因此,如果在函数中将其修改为name
,则对doesnetwork
变量没有影响。为什么不从函数中返回new JustGage
的结果呢?这是一个用于创建量规的javascript附加组件。确实,不能将变量的引用传递给函数,只能传递值。您可以尝试,但实际上您应该遵循@KarlReid的建议,只需使用返回值即可。@KarlReid:一切都是“按值传递”。仅因为对象是引用类型值,并不意味着它们是“按引用传递”。“通过引用传递”的意思是:var a={};var b=a;b={};console.log(a==b)/*这在JavaScript*/
中是不正确的。