으아악이름에 값을 할당한 후 페이지를 어떻게 새로 고쳐도 값이 변경되지 않고 그대로 유지된다는 사실에서 문제가 발생합니다. 이로 인해 js 변수의 수명 주기가 조금 의심스럽습니다! 저도 우연히 접했습니다. 이전 테스트 코드에서는 이름이 정의되지 않았고 처음에 값도 지정되지 않았으나 이름 유형이 문자열이었습니다. 나중에 윈도우 객체를 출력해 보니 객체에 속성 이름이 있고 빈 문자열이어서 이해하기 쉽습니다. 그런데 할당 후에 이 값이 빈 문자열로 초기화되지 않고 항상 존재하는 이유는 무엇입니까?
name에 값을 할당하면 name='hello word';는 실제로 window.name='hellow world'이고 window.name의 정의를 보면 이름을 가져오거나 설정합니다. #🎜 🎜#지금 이 창에 이름을 설정했기 때문에 어떻게 새로 고쳐도 창이 닫히지 않고 이름이 그대로 남아 있는 것으로 알고 있습니다. js 변수
문제는 페이지를 새로 고치면 새로운 실행 컨텍스트가 되므로 모든 것이 초기 상태로 돌아간다는 것입니다. 여기에 할당한 값이 이미 새로 새로 고쳐진 컨텍스트에 있을 수 있습니까? 역할을 하다?
와우, 이런 상황은 처음 봤습니다. 온로드에 넣으면 이런 상황은 발생하지 않을 것입니다. 전문가의 조언을 기다리겠습니다.
방금 시도해봤는데 창 개체에 속성으로 값이 할당됩니다. F5를 새로 고쳐도 지워지지 않습니다.
다음은 윈도우 객체에 대한 소개입니다. 그 안에 문장이 있습니다. 모든 JavaScript 전역 객체, 함수 및 변수는 자동으로 윈도우 객체의 구성원이 됩니다.
Window 객체
모든 브라우저는 window 객체를 지원합니다. 브라우저 창을 나타냅니다.
모든 JavaScript 전역 개체, 함수 및 변수는 자동으로 창 개체의 구성원이 됩니다.
전역 변수는 창 개체의 속성입니다.
전역 함수는 창 개체의 메서드입니다.
예를 들어 전역 변수 name1을 정의하면 window 개체에서도 찾을 수 있습니다.
window 객체는 브라우저 창을 나타냅니다. 따라서 창이 닫히지 않는 한 F5를 새로 고쳐도 내부 값(필요할 경우 창 개체 자체의 속성)은 항상 존재합니다.
window.name을 도메인 간 데이터 전송에도 사용할 수 있다는 생각이 갑자기 떠올랐습니다.
코드가 다음과 같이 변경되었기 때문에 js의 자동 변환 유형 및
typeof
함정과 관련이 있을 수 있습니다.typeof
坑有关系,因为把代码换成:log输出的照样是
string
,所以能排除掉是神赋值的问题。刚才顺手查了下 MDN,发现
window
本身有个name
属性(传送门)……MDN上给的信息不多,于是又去参考了下阮老师《JavaScript 标准参考教程》上的相关说明:在name变量还没定义的时候,直接访问的是顶层的
로그 출력은 여전히 window.name
으아악string
이므로 신성한 할당 문제를 배제할 수 있습니다. 🎜 🎜지금 MDN을 확인해 보니window
자체에name
속성(포털)이 있는 걸 발견했습니다... MDN에 대한 정보가 별로 없어서 Ruan을 참고해서 갔습니다. 교사의 "JavaScript Standard Reference Tutorial"에서 관련 지침을 다시 확인하세요. 🎜 🎜🎜 🎜name 변수가 정의되지 않은 경우 최상위window.name
에 직접 액세스합니다. 이것은 문자열입니다. 아마도 이것이 의미하는 것일까요? 🎜