JS基礎(chǔ)語法:遵循ECMA 262標(biāo)準(zhǔn)
JS-Web-API:遵循W3C標(biāo)準(zhǔn)
要想在瀏覽器運(yùn)行運(yùn)行代碼,我們開發(fā)的代碼既要遵循ECMA 262標(biāo)準(zhǔn),又要遵循W3C標(biāo)準(zhǔn)。
W3C標(biāo)準(zhǔn)中關(guān)于JS的規(guī)定有:DOM操作浩聋,BOM操作,事件綁定臊恋,ajax請求(包括http協(xié)議)衣洁,存儲。
比如實(shí)現(xiàn)頁面彈框 window.alert(123)捞镰,瀏覽器需要做:定義一個(gè)window全局變量闸与,對象類型;給他定義一個(gè)alert屬性岸售,屬性值是一個(gè)函數(shù)践樱。
獲取元素document.getElementById(id),瀏覽器需要做:定義一個(gè)document全局變量凸丸,對象類型拷邢;給它定義一個(gè)getElementById的屬性,屬性值是一個(gè)函數(shù)屎慢。
但是W3C標(biāo)準(zhǔn)沒有規(guī)定任何JS基礎(chǔ)相關(guān)的東西瞭稼,他不管什么變量類型、原型腻惠、作用域和異步环肘,只管定義用于瀏覽器中JS操作頁面的API和全局變量。
全面考慮集灌,JS內(nèi)置的全局函數(shù)和對象有哪些悔雹?
答:ECMA標(biāo)準(zhǔn)中Object Array Boolean String Math JSON等,上面提到的window document,還有一些未定義的全局變量腌零,如navigator.userAgent.
常說的JS(瀏覽器執(zhí)行的JS)包含兩部分:JS基礎(chǔ)知識(ECMA262標(biāo)準(zhǔn))梯找;JS-Web-API(W3C標(biāo)準(zhǔn))。所以說node.js包括ECMA 262標(biāo)準(zhǔn)益涧,但是它就不需要遵循W3C標(biāo)準(zhǔn)锈锤,因?yàn)樗鼘儆诜?wù)器端的,所以遵循服務(wù)器端的一些標(biāo)準(zhǔn)闲询,可能叫做JS-Server-API久免,而不是瀏覽器端的標(biāo)準(zhǔn),JS-Web-API。