当页面一打开;JS要从上向下执行的时候,先把整个JS浏览一遍,
把其中带var 和 function 的 提前声明一下;
var 是只 声明 不定义
function 是 声明 + 定义
*/
例如如果声明一个变量a 让浏览器还没有执行到a的赋值的时候,会检测到a有变量提升,但是检测不到定义,所以会弹出undefined
console.log(a)//undefined
var a=1
/*
变量提升(声)
在代码执行之前,会把JS中带有var和function关键字的变量提前声明;
对于带var 是只声明 不定义; 给的默认值是 undefined
带 function的 既声明 又定义
在条件句中的代码,也会进行变量提升,不管条件是否成立,
对于带function的变量 这时 只有声明 没有定义;(IE6-8 是既声明又定义的)
*/
var a ; // 声明
a = 12; // 定义
console.log(f,f2);或弹出undefined 和函数式两个结果
// function 声明的函数 在整个代码执行之前; 早就已经存在了;所以在整个JS的任意位置都可以执行
f()
function f() {
console.log(6666)
}
f()
// f2()
var f2 = function () {
console.log(777)
}
f2()