2012-11-24 4 views
1

나는이 질문에 대해 어리 석다. 하지만 아래 변수 범위가 aaa 인 성가신 문제가 있습니다. 끝에 test을 출력하면 안됩니까? 하지만 그건 그렇지 않았습니다. 함수 내에서 aaa을 사용하려면 무엇이 잘못 되었습니까? 당신이 aaa을 에코 할 때 함수의 첫 번째 매개 변수에 정의 된node.js 또는 casper.js의 가변 범위

var casper = require('casper').create(); 

var aaa = 'test'; 
casper.start('http://google.com/', function() { 
    this.echo("I'm in"); 
}); 

casper.run(function(aaa) { 
    this.echo(aaa); 
    this.exit(); 
}); 

답변

4

, 그것은 aaa을 사용합니다. 첫 번째 매개 변수가 bbb 또는 무엇이라도 호출 된 경우 바깥 쪽 닫힘에 정의 된 aaa을 사용하므로 예상 한 출력이 표시됩니다.

+0

@HP. 둘러싸는 스코프에 정의 된 기호를 마스크 (가려 지거나 우선 함)하는 비즈니스를 "섀도 잉"이라고합니다. 예를 들어,'echo'함수의'aaa' 인수는 전 세계적으로 선언 된'aaa'를 "음영"합니다. –

+0

Brad의 대답에 몇 가지 설명을 추가하면됩니다. 함수 내부에서 변수를 전달하는 것은 var 키워드로 정의하는 것과 같습니다. 그래서 var aaa = 'test'; function (aaa) {}은 var aaa = 'test'를 말하는 것과 같습니다; function() {var aaa = '다른 것'; } – Geuis