深刻理解js的變量提高和函數提高

1、變量提高javascript

  變量提高:在當前做用於中,js代碼自上而下執行以前,瀏覽器會把全部帶var/function關鍵字進行提早聲明或定義。帶var的關鍵字只是提早聲明一下,帶function的關鍵字在變量提高階段把定義和聲明都完成了。java

  1.   console.log(global); // undefined
  2.   var global = 'global';
  3.   console.log(global); // global
  4.   function fn () {
  5.     console.log(a); // undefined
  6.     var = 'aaa';
  7.     console.log(a); // aaa
  8.   }
  9.   fn();

  之因此會是以上的打印結果,是因爲js的變量提高,實際上上面的代碼是按照如下來執行的:瀏覽器

  1.   var global; // 變量提高,全局做用域範圍內,此時只是聲明,並無賦值
  2.   console.log(global); // undefined
  3.   global = 'global'// 此時才賦值
  4.   console.log(global); // 打印出global
 
  1.   function fn () {
  2.     var a; // 變量提高,函數做用域範圍內
  3.     console.log(a);
  4.     a = 'abc';
  5.     console.log(a);
  6.   }
  7.   fn();

  

var nums = 99; yu() function yu(){ console.log(nums) //undefined 變量提高 yu函數裏的聲明至關於var nums; console.log(nums);nums=78
    var nums = 78; }

 

2、函數提高函數

  js中建立函數有兩種方式:函數聲明式和函數字面量式。只有函數聲明才存在函數提高!如:spa

  1.   console.log(f1); // function f1() {}   
  2.   console.log(f2); // undefined  
  3.   function  f1() {}
  4.   var f2 = function() {}

  只因此會有以上的打印結果,是因爲js中的函數提高致使代碼其實是按照如下來執行的:code

  1. function f1() {} // 函數提高,整個代碼塊提高到文件的最開始<br>     console.log(f1);   
  2.   console.log(f2);   
  3.   varf2 = function() {}

結語:在函數與變量之間,函數首先會被提高,而後纔是變量。blog

第一次寫博客,寫的不怎麼好,繼續努力。ip

相關文章
相關標籤/搜索