更新時間:2022-04-15 來源:黑馬程序員 瀏覽量:
在Node.js中,global對象定義了全局命名空間。當我們定義了一個全局變量時,這個變量同時也會成為全局對象global的屬性,反之亦然??梢哉f在全局作用域中,任何變量、函數(shù)和對象都是global對象的一個屬性值。
本節(jié)中要介紹的是,在Node.js中提供的一些全局可用的變量、函數(shù)和對象,這里所謂的全局就是不需要進行模塊加載,可以直接使用的,其中包括全局作用域的函數(shù)和對象,也包括另一種不在全局作用域,而是在每個模塊作用域都存在的變量、函數(shù)和對象,在全局可用,但不是golbal對象的屬性。
例如require()函數(shù),在每個模塊作用域中存在,所有不需要加載可以使用,我們可以說它是全局可用,但它不是全局函數(shù)。
Node.js6.2.1版本的相關(guān)手冊中,在手冊中對API都有介紹,在目錄中打開index.html代表查看所有API,如圖2-43所示。
圖2-43index.html
在圖2-43的右側(cè)菜單中找到“Globals”并單擊,然后會顯示所有在全局可以使用的變量、函數(shù)和對象,如圖2-44所示。
圖2-44全局可用的變量、函數(shù)和對象
在圖2-44中,_dirname、_filename、exports和module對象與require()函數(shù)相似,都是存在于每個模塊作用域中,實際上并不是全局對象,Buffer和process在本書后面的章節(jié)中會陸續(xù)講解到。
Node.js中提供了兩個與文件操作相關(guān)全局可用變量_dirname和_filename,_dirname表示當前文件所在的目錄,_filename表示當前正在執(zhí)行的腳本的文件名。它將輸出文件所在位置的絕對路徑,且和命令行參數(shù)所指定的文件名不一定相同。如果在模塊中,返回的值是模塊文件的路徑。
接下來通過一個案例來演示兩個變量的具體使用。在C:\Course\code\chapter02\目錄下創(chuàng)建demo2-6.js文件,在該文件下添加代碼如下所示。
demo2-6.js
// 輸出全局變量__dirname 的值 console.log('文件的目錄是:'+__dirname); // 輸出全局變量__filename 的值 console.log('文件的絕對路徑是:'+__filename);
打開終端,執(zhí)行demo2-6.js,執(zhí)行結(jié)果如圖2-45所示。
圖2-45demo2-6.js執(zhí)行結(jié)果
需要注意的是,無論通過開發(fā)工具還是記事本創(chuàng)建文件,如果文件內(nèi)需要執(zhí)行的代碼中包含中文,都要將文件編碼保存為utf8格式,否則在執(zhí)行時會出現(xiàn)亂碼問題,關(guān)于亂碼問題在第5章節(jié)中會進行詳細介紹。
關(guān)于文件的編碼修改,可以用記事本打開方式打開文件,找到【文件】菜單,如圖2-46所示。
圖2-46【文件】菜單在圖2-46中,單擊【文件】->【另存為】,可以看到文件編碼選項,如圖2-47所示。
圖2-47編碼選項
在圖2-47中可以進行文件編碼的修改,單擊“保存”可以完成修改,其他開發(fā)工具中可以在文件上右擊,一般找到修改文件編碼的位置。
Node.js中還提供的常用的全局函數(shù),如表2-2所示。
表2-2Node.js的全局函數(shù)函數(shù)
5.console對象
在前面的學習過程中,經(jīng)常會使用到“console.log()”語句,console對象就是一個全局對象,用于提供控制臺標準輸出,除了console.log()函數(shù)外還提供了其他的函數(shù),如表2-3所示。
表2-3console對象提供的函數(shù)
由于表2-3在開發(fā)中不經(jīng)常使用,這里只需要掌握console.log()的使用方法即可。