2017-09-26 13 views
1

いくつかのゲージを作成したいが、私のGaugeオブジェクトは未定義のままである。Javascript関数グローバル変数は未定義ですか?

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

は、 'doesntwork' JustGage'同様 –

+4

プリミティブが値によって渡される'で、どのようなシェアはundefined' 'でください - プリミティブ。したがって、関数内で 'name'のように変更すると、' doesntwork'変数には影響しません。関数から '新しいJustGage'の結果を返してみませんか? –

+0

ゲージを作成するためのjavascriptアドオン。実際には、変数への参照を関数に渡すことはできません。値を渡すことしかできません。https://github.com/toorshia/justgageを参照してください。 – tipsfedora

答えて

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

ありがとうございます。 – tipsfedora

+0

ようこそ。 – llama

関連する問題