鍍金池/ 問答/HTML/ js函數(shù)聲明和var變量聲明提前的迷惑

js函數(shù)聲明和var變量聲明提前的迷惑

實例1.
clipboard.png

運行結(jié)果為: test2
迷惑:函數(shù)聲明的優(yōu)先級高于變聲聲明的優(yōu)先級,那么為什么運行結(jié)果不是undefined呢,

實例2.
clipboard.png

運行結(jié)果為:12;
可以理解為如下嗎?

clipboard.png

在犀牛書中3.9節(jié)最后一段落,重復的聲明和遺漏的聲明中,第一句話是這樣寫的:
使用var語句重復聲明變量是合法且無害的。如果重復聲明帶有初始化器,那么這就和一條簡單的賦值語句沒什么兩樣。

那么請問,實例2該怎么理解呢

誰來為我揭開這層紗?

回答
編輯回答
大濕胸

1.引擎在處理var語句時,若當前作用域內(nèi)存在同名變量,則會跳過創(chuàng)立變量步驟,直接進行初始化操作。因此在上面已經(jīng)創(chuàng)立tes函數(shù)的情況下,var tes這句話相當于沒有任何作用。

2.原因同1。而且犀牛書解釋得很清楚了,第二條var bb沒有初始化器,因此連僅剩的賦值功能也不存在了

2017年3月23日 04:25