1.宿主對象與宿主環境
宿主對象:由ecmascript實作的宿主環境提供的對象,可以了解為:浏覽器提供的對象。所有的bom和dom都是宿主對象。
宿主環境:一般宿主環境由外殼程式建立與維護,隻要能提供js引擎執行的環境都可稱之為外殼程式。如:web浏覽器等。
2.日期的轉換
3.變量的聲明
var i;
var sum;
或者
var i,sum;
這些沒有賦初始值的對象,初始值就是undefined
4.在函數體内,局部變量的優先級高于同名的全局變量。并且同名局部變量會修改(覆寫)全局同名變量的值。
5.函數作用域與聲明提前
分析一個例子,如下:
了解:可能你覺得為什麼第一個輸出是"undefined",你可能覺得應該輸出"glob"。因為scp上面定義的是全局變量啊。
全局變量在js中的任何地方都是起作用的,為什麼這裡出問題了呢?
首先,正如第四點所說。全局變量scp與局部變量scp同名,是以局部變量scp覆寫全局變量scp.
然後,你又困惑,代碼當時不是隻是執行到第一個輸出語句麼,還沒執行到下面的var scp="loca"麼?這時我們要明白一點。
js的函數作用域是指在函數内聲明的所有變量在函數體内部是可見的!
正如這個例子,函數内部定義的scp無論是在var scp="loca"上面還是在下面。是都存在的!
如果你不信,你可以這麼測試一下:

如果b沒有的話,顯示的沒有被定義而不是輸出"undefined"。
我們上面說過函數聲明後沒有賦初始值,預設其初始值就是"undefined"。
可見f()函數内部 scp 是存在的。隻是沒有初始化。直到後面初始化"loca"。
其實上面的例子真是的情況應該是這樣:
scp 這種情況也叫“聲明提前”。
下面這種情況有點意思!
轉載:http://www.cnblogs.com/zqzjs/p/4796242.html