以下のコードは、本「JavaScript Enlightement」から引用しました。コードは、最初の 2 つのステートメントが true を返すことを示していますが、JSFiddle でコードを実行すると、最初の行は "false" (var キーワードで定義された変数) を返します。コードは次のとおりです。
<!DOCTYPE html><html lang="en"><body><script>
var myStringVar = 'myString';
var myFunctionVar = function() {};
myString = 'myString';
myFunction = function() {};
console.log('myStringVar' in window); // returns true
console.log('myFunctionVar' in window); // return true
console.log('myString' in window); // returns true
console.log('myFunction' in window); // return true
</script></body></html>
誰かがここで何が起こっているのか説明できますか?