變量提高、函數提高

一、概述

  • 一、函數申明和變量申明都會提高
  • 二、函數的聲明比變量的聲明的優先級要高
  • 三、函數提高需注意:
函數表達式 var fn=function fn(){}
函數聲明方式 function fn(){}

咱們須要重點注意的是,只有函數聲明形式才能被提高。 
變量賦值並無被提高,只是聲明被提高了。
可是,函數的聲明有點不同,函數體也會一同被提高。
複製代碼

二、代碼測試

/* * @Author: laifeipeng * @Date: 2019-02-27 09:55:48 * @Last Modified by: laifeipeng * @Last Modified time: 2019-02-27 12:49:51 */

// 函數的聲明比變量的聲明的優先級要高
function test1() {
  console.log(a);                 //打印出a的函數體
  function a() { }
  var a;
  console.log(a);                 //打印出a的函數體

  console.log(b);                 //打印出b的函數體
  var b;
  function b() { }
  console.log(b);                 //打印出b的函數體

  // !注意看,一旦變量被賦值後,將會輸出變量
  console.log(c);                 //打印出c的函數體
  var c = 12
  function c() { }
  console.log(c);                 //12

  console.log(d);                 //打印出d的函數體
  function d() { }
  var d = 12
  console.log(d);                //12
}
test1();

console.log('----------分割線---------')

function test2() {
  console.log(a);                 //undefined
  var a = function a() { }
  var a;
  console.log(a);                //打印出a的函數體

  console.log(b);                 //undefined
  var b;
  var b = function b() { }
  console.log(b);                 //打印出b的函數體 

  // !注意看,一旦變量被賦值後,將會輸出變量
  console.log(c);                 //undefined
  var c = 12
  var c = function c() { }
  console.log(c);                 //打印出c的函數體 

  console.log(d);
  var d = function d() { }        //undefined
  var d = 12
  console.log(d);                //12
}
test2();

複製代碼

三、參考文獻

關於JS變量提高的一些坑html

相關文章
相關標籤/搜索