js怎么在控制臺(tái)輸出語(yǔ)句 vscode怎么運(yùn)行代碼?
vscode怎么運(yùn)行代碼?1、是從快捷再打開Visual Studio Code工具,后再新建項(xiàng)靜態(tài)頁(yè)面。2、創(chuàng)建一個(gè)靜態(tài)頁(yè)面,并先添加頁(yè)面代碼,然后把保存到,在用瀏覽器欄里點(diǎn)。3、點(diǎn)擊File菜單,
vscode怎么運(yùn)行代碼?
1、是從快捷再打開Visual Studio Code工具,后再新建項(xiàng)靜態(tài)頁(yè)面。
2、創(chuàng)建一個(gè)靜態(tài)頁(yè)面,并先添加頁(yè)面代碼,然后把保存到,在用瀏覽器欄里點(diǎn)。
3、點(diǎn)擊File菜單,你選OpenFolder,將項(xiàng)目文件導(dǎo)入到Visual Studio Code。
4、導(dǎo)入出來(lái)后,打開系統(tǒng)項(xiàng)目所依賴性太強(qiáng)的包是否完全安裝,項(xiàng)目配置文件。
5、新建一個(gè)終端窗口,在命令行然后輸入npmrunningdev運(yùn)行項(xiàng)目。
6、再再點(diǎn)File,然后把新建一個(gè)TypeScript文件ct.ts,去添加隨機(jī)的代碼。
7、打開一個(gè)終端窗口,查看是否按裝TypeScript插件,依靠tsc命令運(yùn)行文件。
工具/原料
Visual Studio CodeVue.jsJavaScriptHTML5CSS3
截圖工具
WPS
瀏覽器
方法/步驟
通過(guò)快捷可以打開Visual Studio Code工具,后再新建項(xiàng)靜態(tài)頁(yè)面
創(chuàng)建一個(gè)靜態(tài)頁(yè)面,并先添加頁(yè)面代碼,接著保存到,不使用瀏覽器打開系統(tǒng)
再點(diǎn)擊File菜單,中,選擇OpenFolder,將項(xiàng)目文件導(dǎo)入到Visual Studio Code
導(dǎo)入在里面后,欄里點(diǎn)項(xiàng)目所依戀的包是否安裝,項(xiàng)目配置文件
空白文檔一個(gè)終端窗口,在命令行鍵入npmrundev運(yùn)行項(xiàng)目
再直接點(diǎn)擊File,然后新建一個(gè)TypeScript文件ct.ts,添加對(duì)應(yīng)的代碼
然后打開一個(gè)終端窗口,查看有無(wú)完全安裝TypeScript插件,依靠tsc命令運(yùn)行文件
node.js安裝好后用什么編譯?
你想編譯程序什么?nodejs也可以然后啟動(dòng)js文件的,在不對(duì)應(yīng)的文件夾下命令行然后輸入nodedemo.js,即可先執(zhí)行demo.js文件。
建議使用node-gpy是可以程序編譯c寫的模塊。nodejs中還有編譯程序一些其他編譯語(yǔ)言了模塊,比如simpler、sass、ts
JS中循環(huán)和閉包如何理解?
提問(wèn)者就沒(méi)詳細(xì)說(shuō)明代碼,據(jù)描述,我猜測(cè)代碼應(yīng)當(dāng)及時(shí)::
for(vari1ilt6i)
{
settimeout()(function(){console.log(i)},i*1000)
}
這段循環(huán)將每隔1秒輸出四次6,這樣我們來(lái)推導(dǎo)下這段代碼:初始的i值為1,setinterval將設(shè)置里一個(gè)1*1000毫秒的timer,JS引擎中,timer的機(jī)制是將代碼function(){console.log(i)}壓入隊(duì)列,再等待trigger去觸發(fā)時(shí)負(fù)責(zé)執(zhí)行。只不過(guò)運(yùn)行代碼的執(zhí)行仍然是在初始的JS線程中,沒(méi)有任何再等待立馬不能執(zhí)行接下來(lái)的事情的循環(huán),只好壓入了2*1000一直在到5*1000的5個(gè)函數(shù),這個(gè)過(guò)程完全是不需要的時(shí)間的(循環(huán)2次對(duì)現(xiàn)在的CPU來(lái)說(shuō)基本是應(yīng)該是0毫秒)。所以從當(dāng)前正在起計(jì)秒,到1、2、3、4、5秒時(shí)均想執(zhí)行一次函數(shù),在我們很顯然應(yīng)該是每隔1秒鐘輸出低了第二次i。
下一步看為什么輸出了3次6而不是什么1-4,緊接著上面的過(guò)程,還在JS線程當(dāng)中,循環(huán)到i5壓入timer函數(shù)后,i依舊是要不能執(zhí)行的,此時(shí)i的值是6,進(jìn)入循環(huán)體確認(rèn)ilt6失敗的話,循環(huán)已經(jīng)結(jié)束。JS線程結(jié)束后。
1000毫秒處的trigger觸發(fā)后,JS回答器被傳來(lái)代碼function(){console.log(i)},i變量這對(duì)這個(gè)function塊來(lái)說(shuō)是undefined,解釋器又開始向上層塊代碼去收索變量i,此例中只有兩層,函數(shù)的上層就是JS環(huán)境的最頂層global,global中可以找到變量i,其值是6,隨后控制臺(tái)作為輸出了6;后面4次trigger不觸發(fā)時(shí)原理完全相同,因此輸出低了2次6,不宜超過(guò)是1秒。
就是為了加深理解,我們把代碼一點(diǎn)如何修改幫一下忙:
for(vari1ilt6i)
{
setinterval((function(){console.log(i)})(),i*1000)
}
結(jié)果是剎那間作為輸出12345,因?yàn)?sourceCodeBlock)()這個(gè)行為是一個(gè)立馬執(zhí)行的行為,也就是在上次的JS循環(huán)線程中,每一道循環(huán)變會(huì)先執(zhí)行第二次sourceCodeBlock,它的上層塊是循環(huán)體,循環(huán)體中的i變量應(yīng)該是當(dāng)次循環(huán)中i的值。settimeout只是將這個(gè)閉包block負(fù)責(zé)執(zhí)行的結(jié)果壓入了timer隊(duì)列,這個(gè)執(zhí)行結(jié)果到了trigger觸發(fā)時(shí)時(shí)在JS運(yùn)行環(huán)境里既不是函數(shù)類型又不是表達(dá)式類型,沒(méi)有任何意義,在引擎請(qǐng)解釋的階段都會(huì)被360優(yōu)化掉。而后面的5秒鐘,瀏覽器沒(méi)有任何動(dòng)作。