次のコードを実行すると、unknown
unknown
説明 window の 'a' は true ですが、いつ宣言されましたか?教えてください、ありがとう!
の
true
コードを再度変更しました:
結果aは定義されていません。 a が宣言されているのに、なぜこのエラーが報告されるのでしょうか?
aは定義されていません
a
まず変数の改善について話しましょう
このコードが if のコードブロックに入るかどうかに関係なく、 はまだ存在します
if
JavaScript が実行されると、var を通じて定義されたすべての 変数 と 宣言関数 が現在のスコープの最上位に昇格されるためです
var
によって作成された変数にはvarブロックレベルのスコープがないため、現在の関数スコープの最上位に昇格されます
リーリー
a,但没有赋值,自然输出了 undefined
undefined
! 'a' については、実際には、'a' 文字列が最初に実行されます、結果は false です。 >、window には window.false 属性がなく、if コード ブロックに入らずに false が返されます。 ! 'a' in window 其实是先对 'a' 字符串执行非,得到了false,window 里没有 window.false 这个属性,返回了 false 次の例を試すことができます リーリー 2番目の質問 リーリー 上記を理解した上で、を定義しても意味がありません(昇格はありません)、var 定义(不存在提升),又没进 ifが入力されていないため、定義されずにエラーが報告されます。
'a'
、結果は false です。 >、window には window.false 属性がなく、if コード ブロックに入らずに false が返されます。 ! 'a' in window 其实是先对 'a' 字符串执行非,得到了false,window 里没有 window.false 这个属性,返回了 false
false
window
window.false
! 'a' in window
を定義しても意味がありません(昇格はありません)、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
最初の段落を誤解しています'a' in window は false である必要があります'a' in window 为 false!'a' in window 才为 true才会执行 var a = 123;!'a' in window は true である必要がありますvar a が実行されます = 123 ;
'a' in window
!'a' in window
var a = 123;
var a が実行されます = 123 ;
パンダサン正傑=_=
まず変数の改善について話しましょう
リーリーこのコードが
if
のコードブロックに入るかどうかに関係なく、 はまだ存在しますJavaScript が実行されると、
var
を通じて定義されたすべての 変数 と 宣言関数 が現在のスコープの最上位に昇格されるためですによって作成された変数には
グローバルスコープで定義された変数はすべてウィンドウの属性ですvar
ブロックレベルのスコープがないため、現在の関数スコープの最上位に昇格されますリーリー
定義された
window のa
,但没有赋值,自然输出了undefined
! 'a' については、実際には、
'a'
文字列が最初に実行されます、結果は
次の例を試すことができますfalse
です。 >、window
にはwindow.false
属性がなく、if コード ブロックに入らずにfalse
が返されます。! 'a' in window
其实是先对'a'
字符串执行非,得到了false
,window
里没有window.false
这个属性,返回了false
リーリー
2番目の質問リーリー
上記を理解した上で、を定義しても意味がありません(昇格はありません)、
var
定义(不存在提升),又没进if
が入力されていないため、定義されずにエラーが報告されます。この実行には何も問題はありません、
! 'a' in window
这个是false,然后a的赋值没执行,再console不就是undefined么。如果想让赋值执行,判断条件改成
!('a' in window)
以上です。それでも理解できない場合は、演算子の優先順位リストを確認してください。
それでvar
変数の昇格は宣言時に発生します。編集段階では関数またはコードの先頭にコード宣言が置かれるため、次のようになります。 リーリー。
a in window
是true
に関しては リーリー
コードには
https://developer.mozilla.org...var a
。所以不存在变量提升的问题,所以a就没有声明过,所以!('a' in window)是true,所以a
是123
が含まれていません最初の段落を誤解しています
値 123 が割り当てられるのは のみです🎜'a' in window
は false である必要があります'a' in window
为 false!'a' in window
才为 true才会执行
var a = 123;
!'a' in window
は true である必要がありますvar a が実行されます = 123 ;
パンダサン正傑=_=