2017-02-12 2 views
0

이 매우 이상하다, 나는 내가 같이 정의 변수를 사용 노력하고있어입니다 : 내가 사용왜 윈도우 변수를 사용하여 색인을 찾을 때 오류가 발생합니까?

기능에
window.params['variable'] = { ... }; 

나는이 있습니다

function q() 
{ 
... 
// for example 
return new Chart(canvas, window.params['variable']); 
... 
} 

나는 이것을 실행하면

window.params = { ... } 
012 : 나뿐만 PARAMS를 정의 할 때, (나를 위해) 놀라운 Uncaught TypeError: Cannot read property 'variable' of undefined

그러나 : 나는 오류

오류가 사라지고 함수가 정상적으로 실행됩니다! 왜?

은 (Obviusly 나는 window.params['variable']window.params 첫째로 교체,하지만 난이 상당하다고 생각)

감사합니다.

+0

것은 당신이 확장 할 수 있습니다 : 그래서 그것을 할 올바른 방법은

window.params = {}; window.params['variable'] = { }; 

또는

window.params = { 'variable' : {} }; 

다음

function q(){ ... // for example return new Chart(canvas, window.params['variable']); ... } 

당신은 여기에 대한 자세한 정보를 얻을 것이다 첫번째 할당'window.params [ 'variable'] = {...}; ' –

답변

1

params에 속성을 추가하기 전에 params을 먼저 정의해야합니다. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer

+0

감사합니다. –

+0

여기에서 https://jsfiddle.net/sLww6c4u/를 보시고, 라인 114에서 윈도우 변수의 사용법과 무관하게 주요 문제를 볼 수 있습니다. 나는 내가 뭘 잘못하고 있는지 이해할 수 없다. paramsWork에 의해 chartParams [ 'mychart']를 대체하십시오. 동일한 장소의 params가 같은 구조로되어 있기 때문에, 왜 chartParams [ 'mychart']가 필요한지 알 수없는 이유는 무엇입니까? 감사. –

+0

여기'chartsParams'는 배열입니다. 그래서'chartParams [ 'mychart']'는 유효하지 않습니다. 대신에 chartparams [0] [ 'mychart']' – Diode