2013-03-02 2 views
1

아래의 코드는 "JavaScript Enlightement"책에서 가져 왔습니다. 코드는 처음 두 문장이 true를 반환한다고하지만, JSFiddle에서 코드를 실행할 때 첫 번째 줄은 "false"(var 키워드로 정의 된 변수)를 반환합니다. 코드는 다음과 같습니다.Javascript "head"객체 범위

<!DOCTYPE html><html lang="en"><body><script> 
var myStringVar = 'myString'; 
var myFunctionVar = function() {}; 
myString = 'myString'; 
myFunction = function() {}; 
console.log('myStringVar' in window); // returns true 
console.log('myFunctionVar' in window); // return true 
console.log('myString' in window); // returns true 
console.log('myFunction' in window); // return true 
</script></body></html> 

누군가 무슨 일이 일어나고 있는지 설명 할 수 있습니까?

+1

jsfiddle에 관한 질문을 할 때 바이올린에 대한 링크를 제공하는 것이 정중 할 것입니다 ... – JJJ

+0

이 흥미로운 http://jsfiddle.net/V2uEb/1/을 찾을 수 있습니다. 로컬로 시도하면 결과가 표시됩니다. 다른. – Bakudan

+0

@ Juhana 제 질문은 JSFiddle에 관한 것이 아닙니다.하지만 귀하의 요지가 있습니다. –

답변

0

jsFiddle에서 코드는 포함되어 있으며 window에서 직접 실행되지 않지만 페이지가로드 될 때 호출되는 콜백에서 실행됩니다.

이러한 경우를 테스트하려면 표준 페이지에서 코드를 실행하거나 왼쪽 패널의 두 번째 메뉴에있는 "no wrap" 옵션 중 하나를 선택해야합니다.

+0

또는 왼쪽 상단의 두 번째 드롭 다운 목록에서 "포장 없음"옵션을 선택하십시오. http://jsfiddle.net/zEBm6/ – JJJ

+0

@Juhana 팁 주셔서 감사. –