아래의 후크 기능에서 전역 변수 'x'를 사용하고 싶습니다.자바 스크립트에서 함수 후크에서 전역 변수에 액세스하는 방법?
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
오류를 해결하는 방법?
아래의 후크 기능에서 전역 변수 'x'를 사용하고 싶습니다.자바 스크립트에서 함수 후크에서 전역 변수에 액세스하는 방법?
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
오류를 해결하는 방법?
코드가 제대로 작동하지만 window.x
을 사용하여 x
을 전역 변수로 명시 적으로 변환 할 수 있습니다.
(window || root || global || GLOBAL || this || self || {x: undefined).x
{x:undefined}
객체 리터럴 그냥 표현이 오류를 throw하지 않습니다 있는지 확인하는 것입니다 : 브라우저 환경, 또는 전역 객체가 window
를 호출되지 않은 환경에서 시도하지
.
나는 (엄밀히 말해서 이름이없는) 전역 객체에 주어진 모든 이름을 거의 나열했습니다. 단지 여러분의 경우에 적용될 수있는 것을 사용하십시오. 한편
x
이 시간에 의해 기능 (
a
)를 재 할당 할 수있는 경우 호출되는, 폐쇄는 것이 바람직 할 것입니다 : 물론
a = (function (globalX)
{
return function a(param)
{
console.log(globalX);
return oldA(param);
};
}(x || window.x));//pass reference to x, or window.x if x is undefined to the scope
, 당신이 있다면 엄격 모드에서는 암시 적 전역에도주의해야합니다.
그게 내가 생각하기에 당신 코드에 문제가있는 것 같아요. 더 자세한 내용은 실제로 일어나는 일에 대한 단서를 우리에게 제공 할 수 있습니다 ...
폐쇄와 내 실수를 고쳐 주셔서 감사 +1 :) – Praveen
@ user1671639 : thx. 그리고 저는 여러분의 코멘트를 실수로 말하지 않을 것입니다. 왜냐하면 변수 선언이 결국에는 들었기 때문입니다. OP의 스 니펫을 그대로 사용하면'oldA'는'undefined '가되고'oldA (param)'은 오류를 던질 것입니다. 호이스트에 링크가있는 OP를 제공하는 것은 좋은 방법입니다. –
@EliasVanOotegem '(루트 || 창)'은 mozilla firefox 콘솔에 오류를 발생시킵니다. 'ReferenceError : root is not defined' –
함수 내에서 전역 Js 변수에 액세스하려면 Var를 사용하지 마십시오. 함수 범위와 전역 범위에서 var 언급. 예 : 또한
<script>
var foo = "hello";
function fxn() {
alert(foo);
foo = "bai";
}
fxn();
alert(foo+"out side");</script>
<script>
당신이 [범위 지정 및 ㅏ] 주위를 둘러해야한다 (http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html) – Praveen
user1671639 @ :에 할당 된 기능을'A'는 수 _cannot 그것을 표현으로 여기에 올랐다. 여기에 올리는 유일한 것은 변수 선언입니다 –
'node' 환경에 있습니까? 이 경우'global.x = 10;'&'alert (global.x)'를 시도하십시오. 사실, 지구 적 대상을 오염시키는 것은 좋은 생각이 아닙니다. 그러나, 당신은 그것을 시도하고 싶을지도 모르다. –