1.? 同名變量只會(huì)被聲明一次
2.? 函數(shù)是js 的一等公民, 具有優(yōu)先編譯權(quán)
3.? 函數(shù)被聲明到變量的前面, 會(huì)被優(yōu)先編譯并覆蓋同名變量的聲明
4.? es6 之前 js 只存在兩種作用域, 全局作用域 和? 函數(shù)作用域
變量函數(shù)提升 是 在解析時(shí)候把 變量聲明 和 函數(shù) 提升到對(duì)應(yīng)作用域的頂部
下面我們通過(guò)例子一一看下
?關(guān)于if/for 代碼塊中的 函數(shù)還要看一下這個(gè)
https://www.lagou.com/lgeduarticle/119657.html? 總結(jié) 代碼塊內(nèi) 遇到 function? 會(huì)把上次的操作映射的全局? 下一個(gè)操作不是遇到函數(shù) 就是私有
簡(jiǎn)單借鑒一下吧? 自己都學(xué)廢了
例子:?
說(shuō)明: es6 之前沒(méi)有塊級(jí)作用域? ?if代碼塊 中的變量 會(huì)被提升到全局變量? ? "條件判斷中的函數(shù)要根據(jù)瀏覽器版本來(lái)決定是否提升到全局作用域(請(qǐng)看最后一個(gè)例子)"
先變量提升 var a;? ==>? a 是?undefined? 打印出"undefined"? ==>? a 賦值? ?打印出 "莫拉"
函數(shù)會(huì)被優(yōu)先編譯? 覆蓋同名函數(shù)
說(shuō)明: es6 之前 只存在 全局作用域 和 函數(shù)作用域
函數(shù)字面量式? ==>? 這時(shí)候函數(shù)只是具體的值 不會(huì)提升
條件判斷中函數(shù)提升問(wèn)題? 低版本瀏覽器提升? 高本版瀏覽器不提升
目前還是搞不懂 變量和函數(shù) 誰(shuí)提升到誰(shuí)的前面? 但是感覺(jué)不重要了,? 函數(shù)會(huì)覆蓋同名變量? 所以貌似這些就不重要了
如有問(wèn)題請(qǐng)多多指教