Javascript変数の実行過程と配列とオブジェクトの違い

954 ワード

変数の昇格
var f = 1;
function bar(){
    f = 10;
    function f(){

    }
}
bar();
alert(f);
  :1、  bar,  f
      2、f = 1
      3、bar    ,    
         3.1、    f
         3.2、   f   10
         3.3、      ,      
      4、alert(f)   1
JS実行プロセス1.先に変数を上げる(先に関数を上げて変数を上げる、名前が同じなら、変数は関数をカバーして上げます)2.また実行します.もしクローズドが発生したら3を作成します.クローズドスペースで1と2を繰り返します.先に定義します.5.変数は6.関数を上げます.
問題提起
function change() {
  alert(typeof fn);
  function fn() {
    
  }
  var fn
}
change()
なぜundefinedではないですか?
jsでは関数の宣言は変数優先度より高く、定義プロセスは変数によって上書きされません.
あなたのコードは
function change() {
   function fn(){}
   var fn;
   alert(typeof fn) // function      
   fn=1;
   alert(typeof fn) // 1      
}
change()
配列とオブジェクトの違い
var arr = [ , , , ,  ,];
var obj = {
   xxx :xxx,
   xxx :xxx
}
注意obj.xxxobj[xxx]の違い
第一は、Objにはその属性が必要であり、第二の属性は動的に属性を追加することができます.文字列による方法です.