2014-10-17 1 views
1

'name'변수를 초기화 할 때마다 페이지를 통해 값이 유지됩니다. 이처럼변수 'name'은 처음 사용 후 초기화 할 필요가 없습니다. [JavaScript]

:

page1.html

<html> 
<script> 
    var name = prompt("What's your name?"); 
    alert(name); 
</script> 
    <a href='page2.html'> Page2</a> 
</html> 

page2.html

<html> 
    <script> 
     alert(name); 
    </script> 
</html> 

그래서 변수 이름이 프롬프트에 주어진 된 내용의 값을 유지 두 페이지에 첫 번째 페이지의 두 페이지는 같은 일을 경고합니다. 누군가가 왜 이런 일이 일어 났는지 설명 할 수 있습니까?

+1

그렇게해서는 안됩니다. 새 페이지를로드 할 때 모든 변수가 재설정됩니다. – Barmar

+0

iframe을 통해 page2.html에 액세스합니까? –

+0

'page2.html'에서, 경고 할 때 경고하지만 메시지가 표시되지 않습니까? –

답변

5

표시되는 동작이 정상적이지 않으며 거의 ​​모든 변수에서 작동하지 않습니다. name은 실제로 Javascript에서 예약 변수이므로 흥미로운 동작을보고있는 것입니다.

자바 스크립트의 모든 변수는 window 개체의 속성입니다. age이라는 변수를 만들면 window.age에서 액세스 할 수도 있습니다. window.name은 현재 브라우저 창에서 이름을 부여 할 수있는 특수한 속성이며이 값은 페이지간에 유지 될 수 있습니다.

변수 이름을 age으로 변경하면 예상대로 작동하게됩니다. 변수는 page2.html에서 비어있게됩니다.

A little more about window.name

+0

감사! 이것은 모든 것을 설명합니다! –

1

페이지를 통해 값을 유지하지 않으며 두 페이지가 동일한 경고를하지 않습니다.

페이지에 name을 약간의 값으로 설정하는 다른 코드가 있어야합니다.

3

글로벌 name 변수는 window.name property입니다. 그것은 동일한 브라우징 컨텍스트에서 실제로 페이지로드에 걸쳐 유지되는 문자열입니다. 새 탭에서 두 번째 페이지를 열면 더 이상 작동하지 않아야합니다.

이렇게하려면 변수에 safe name을 사용하거나 IIFE에 코드를 래핑하십시오.