2017-09-26 6 views
1

일부 게이지를 만들고 싶지만 내 게이지 개체는 정의되지 않은 채로 있습니다.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

그것의 자바 스크립트 추가 기능 게이지를 만들 수 있습니다. 실제로는 * 변수에 대한 참조를 함수에 전달할 수는 없으며 값만 전달할 수 있습니다. 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