函數表達式 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