0
結果は2、2を出力すると予想される以下のコードがあります。ブラウザとnodeJSで以下のコードランニングに違いがあるのはなぜですか?
nodeJSコンソールで実行すると、定義されていません。 私はそれをChromeで実行すると、期待値が得られます。
私の質問ですが、この違いはどういう違いがありますか?
var a = 2;
function foo(){
console.log(this.a);
}
(function(){
foo();
}())
function doFoo(fn){
fn();
}
var obj ={
a:3,
foo:foo
};
doFoo(obj.foo);
ブラウザ内のグローバル変数は、「ウィンドウ」のプロパティです。したがって、var a = 2を宣言すると、基本的にこれはwindow.a = 2を作成します。 – Pratyush
@WangShuhao:javascript: 'var a'でローカル変数を宣言する方法。どのようにjavascriptでブロック変数を宣言する 'let 'を。 javascriptでグローバル変数を宣言する方法: 'a'。 javascriptでは、 'var'または' let'キーワードを使用せずに変数に代入すると、グローバル変数が作成されます。 – slebetman
ありがとう!私は答えとしてマークします。 –