다음 코드를 실행하면 undefined
undefined
설명'a' in window 为 true 그런데 언제 선언됐나요? 말해주세요, 감사합니다!
'a' in window
true
코드를 다음으로 변경했습니다:
결과a is not defined。 既然 a가 선언되었는데, 이 오류가 보고되는 이유는 무엇인가요?
a is not defined
a
변수 개선부터 먼저 이야기해볼까요
이 코드가 if의 코드 블록에 들어가든 안 들어가든 상관없이 a는 여전히 존재합니다
if
JavaScript가 실행되면 var를 통해 정의된 모든 변수 및 선언적 함수가 현재 범위의 최상위로 승격되기 때문입니다
var
var을 통해 생성된 변수에는 블록 수준 범위가 없으므로 현재 함수 범위의 최상위로 승격됩니다
전역 범위에 정의된 변수는 모두 창의 속성입니다
이 코드는 실제로 이 순서대로 실행됩니다
정의됨 a,但没有赋值,自然输出了 undefined
!'a' in window에 대해 실제로는 'a' 문자열이 먼저 실행되고 ! 'a' in window 其实是先对 'a' 字符串执行非,得到了false,window 里没有 window.false 这个属性,返回了 falsenon
!'a' in window
'a'
! 'a' in window
false
window
window.false
으아악
으아악 var 定义(不存在提升),又没进 if위 내용을 이해하고 나면 매우 간단합니다.
이 실행에는 아무런 문제가 없습니다. ! 'a' in window这个是false,然后a的赋值没执行,再console不就是undefined么。如果想让赋值执行,判断条件改成!('a' in window)그렇습니다.
!('a' in window)
그래도 이해가 되지 않는다면 연산자 우선 순위 목록을 확인하세요.
var선언할 때 변수 승격이 발생합니다. 편집 단계에서 코드 선언은 함수나 코드의 시작 부분에 배치되므로 다음과 같습니다.
그래서a in window是true.
a in window
에 관해서는
코드에 var a。所以不存在变量提升的问题,所以a就没有声明过,所以!('a' in window)是true,所以a是123
var a
123
https://developer.mozilla.org...
첫 번째 문단을 잘못 이해하셨습니다'a' in window must be false'a' in window 为 false!'a' in window 才为 true才会执行 var a = 123;!'a' in window must be truevar a가 실행됩니다 = 123 ;
var a = 123;
var a가 실행됩니다 = 123 ;
팬더 상정지에=_=
변수 개선부터 먼저 이야기해볼까요
으아악이 코드가
if
의 코드 블록에 들어가든 안 들어가든 상관없이 a는 여전히 존재합니다JavaScript가 실행되면
var
를 통해 정의된 모든 변수 및 선언적 함수가 현재 범위의 최상위로 승격되기 때문입니다var
을 통해 생성된 변수에는 블록 수준 범위가 없으므로 현재 함수 범위의 최상위로 승격됩니다전역 범위에 정의된 변수는 모두 창의 속성입니다
이 코드는 실제로 이 순서대로 실행됩니다
으아악정의됨
a
,但没有赋值,自然输出了undefined
,!'a' in window
에 대해 실제로는'a'
문자열이 먼저 실행되고! 'a' in window
其实是先对'a'
字符串执行非,得到了false
,window
里没有window.false
这个属性,返回了false
nonfalse
,window
에는window.false
속성이 없으며 if 코드 블록을 입력하지 않으면false
가 반환됩니다.으아악
두 번째 질문으아악
(프로모션 없음)을 정의해도 소용이 없으며, 🎜가 입력되지 않아 정의되지 않고 오류가 보고됩니다. 🎜var
定义(不存在提升),又没进if
위 내용을 이해하고 나면 매우 간단합니다.이 실행에는 아무런 문제가 없습니다.
! 'a' in window
这个是false,然后a的赋值没执行,再console不就是undefined么。如果想让赋值执行,判断条件改成
!('a' in window)
그렇습니다.그래도 이해가 되지 않는다면 연산자 우선 순위 목록을 확인하세요.
으아악var
선언할 때 변수 승격이 발생합니다. 편집 단계에서 코드 선언은 함수나 코드의 시작 부분에 배치되므로 다음과 같습니다.그래서
a in window
是true
.에 관해서는
으아악코드에
이 포함되어 있지 않습니다.var a
。所以不存在变量提升的问题,所以a就没有声明过,所以!('a' in window)是true,所以a
是123
https://developer.mozilla.org...
첫 번째 문단을 잘못 이해하셨습니다
123이라는 값이 할당된 a 만 있습니다🎜'a' in window
must be false'a' in window
为 false!'a' in window
才为 true才会执行
var a = 123;
!'a' in window
must be truevar a가 실행됩니다 = 123 ;
팬더 상정지에=_=