摘要:下面所有的東西都不為堆高我的編程能力,所以我只是把對(duì)的認(rèn)識(shí)用最粗鄙的語(yǔ)言進(jìn)行講解和記錄,所以,閱讀需謹(jǐn)慎執(zhí)行在執(zhí)行之前會(huì)先進(jìn)行編譯。所以對(duì)純前端尤其值得一提,不僅要知道怎么進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換更要清楚的知道你當(dāng)下在操作的是什么數(shù)據(jù)類型。
下面所有的東西都不為堆高我的編程能力,所以我只是把對(duì)JS的認(rèn)識(shí)用最粗鄙的語(yǔ)言進(jìn)行講解和記錄,所以,閱讀需謹(jǐn)慎!
JS執(zhí)行
JS在執(zhí)行之前會(huì)先進(jìn)行編譯。這第一句話都可能被我?guī)牧耍吘故忻嫔隙际钦f(shuō)JS是動(dòng)態(tài)的解釋執(zhí)行語(yǔ)言,但那又如何?!知道JS在執(zhí)行之前是先進(jìn)行‘編譯’的就好。且看下面
console.log(a);//undefined //把它復(fù)制到j(luò)s文件里,并對(duì)下面一行打上斷點(diǎn),看控制臺(tái)輸出的是什么?undefined!說(shuō)明在執(zhí)行前進(jìn)行了‘編譯’ //提醒:最好是在沒(méi)有安裝插件的瀏覽器環(huán)境執(zhí)行,要不控制臺(tái)可能會(huì)出現(xiàn)因插件帶來(lái)的異常信息 console.log(b);//Uncaught ReferenceError: b is not defined var a="a";
對(duì)于上面的代碼還要注意:
JS存在變量提升的行為,即會(huì)把聲明的變量提升到當(dāng)前執(zhí)行上下文的最頂端
所以console.log(a)輸出的是undefined,注意!是undefined!不是a!變量提升提升的是變量的聲明,而不是先執(zhí)行var a="a"這句話。而console.log(b)卻會(huì)拋出一個(gè)異常,雖然都是‘沒(méi)定義’但一定要分清a是undefined,b是not defined是變量沒(méi)有聲明,是一個(gè)會(huì)阻塞JS執(zhí)行的ReferenceError異常
另外ReferenceError異常同作用域判斷失敗相關(guān)
堆棧
不要問(wèn)我什么是堆棧,我也不知道,不過(guò)我通常這么理解:堆,是存放數(shù)據(jù)的堆內(nèi)存;棧就是用來(lái)執(zhí)行的盒子容器(真的會(huì)被我?guī)模?,這里講棧,其實(shí)通俗來(lái)說(shuō),棧就是堆棧。
棧遵循先進(jìn)后出,后進(jìn)先出的特點(diǎn),進(jìn)出的是執(zhí)行上下文,最先進(jìn)入的全局上下文,并且在瀏覽器關(guān)閉時(shí)才被彈出
JS雖說(shuō)是單線程的,但也能實(shí)現(xiàn)一些異步特性,進(jìn)入堆棧的就有這么兩種情況:同步情況和異步情況
同步情況當(dāng)然是當(dāng)下進(jìn)入
異步情況常見(jiàn)的包括兩種:延時(shí)和事件監(jiān)聽(tīng),事件監(jiān)聽(tīng)常如AJAX,當(dāng)他們的回掉函數(shù)執(zhí)行時(shí)才創(chuàng)建其執(zhí)行的上下文放入棧中:
setTimeout(function () { console.log(1); }); console.log(2);
是不是先打印的2?雖然這里并沒(méi)有設(shè)置時(shí)長(zhǎng),但依舊先執(zhí)行console.log(2),這便是堆棧的機(jī)制,JS執(zhí)行的機(jī)制表現(xiàn)
作用域這個(gè)東西簡(jiǎn)單、老生常談,但如果稍不留意還是會(huì)經(jīng)常出錯(cuò),然而這里我只說(shuō)幾點(diǎn)不直觀的演示和講解
變量提升會(huì)先提升函數(shù)然后才是變量,見(jiàn)下
fa();//fa fb();//Uncaught TypeError: fb is not a function //fb()的異常錯(cuò)誤代表變量已被聲明且作用域判斷成功,但因還沒(méi)定義造成的用方錯(cuò)誤 function fa() { console.log("fa"); } var fb=function () { console.log("fb"); };
所以,為了避免混亂,也是推薦的規(guī)范寫法,以后的函數(shù)聲明還是用變量聲明吧。
循環(huán)結(jié)構(gòu)和條件結(jié)構(gòu)的用花括號(hào)包裹的代碼塊并不會(huì)創(chuàng)建新的作用域,也不是真正的代碼塊,如下
(function(){ for(var i=0;i<6;i++){ if(i===3){ var b=i; return false; } console.log(b);//三次undefined } })();
注意:ES6的let const已做改進(jìn)
類型不是說(shuō)數(shù)據(jù)類型哈!
JS包括基本類型和引用類型
基本類型即直接存放在內(nèi)存中的,可以直接訪問(wèn)的,其包括number string boolean null undefined
引用類型即存放在內(nèi)存中的對(duì)象,實(shí)際保存的是一個(gè)指針,一個(gè)引用,其包括object array function,且看下面的代碼
var a=[1,2,3,4]; var b=a; b[0]=6; console.log(a);//[6, 2, 3, 4]弱類型
這個(gè)沒(méi)什么好說(shuō)的,但異常往往總是因此發(fā)生,哪怕不是什么復(fù)雜的工程。所以對(duì)純前端尤其值得一提,不僅要知道怎么進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換更要清楚的知道你當(dāng)下在操作的是什么數(shù)據(jù)類型。另外,建議使用全判斷,即如==替換為===
函數(shù)依舊不負(fù)責(zé)任的說(shuō):我不知道js一切皆對(duì)象是對(duì)是錯(cuò),該怎么表述它才是對(duì)的或錯(cuò)的,但除原始值(或者上面說(shuō)的基本類型)是對(duì)象是毫無(wú)疑問(wèn)的,也正式如此,才讓函數(shù)能有多種身份:普通函數(shù)、對(duì)象的方法、對(duì)象的構(gòu)造器、對(duì)象
—————————————————————占位————————————————————————
function免費(fèi)配送了除了this之外的arguments參數(shù),這個(gè)在我們不清楚該函數(shù)傳過(guò)來(lái)那些參數(shù)時(shí)比較有用
JS的數(shù)組其實(shí)是對(duì)象,是arraylike的對(duì)象,所以for等循環(huán)不僅可以操作數(shù)組也可以操作對(duì)象,所以也可以給數(shù)組添加非整型下標(biāo),另外數(shù)組的長(zhǎng)度是根據(jù)整型作為下標(biāo)的最大值+1得來(lái)的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/84363.html
摘要:經(jīng)過(guò)這段時(shí)間的反省,我也強(qiáng)烈的認(rèn)識(shí)到自己的不足,也找到了相應(yīng)的方式去改正自己。所以,在這里也給廣大正想尋求新的工作機(jī)會(huì)的你一些建議誠(chéng)然面對(duì)自己,了解自己的優(yōu)勢(shì)和劣勢(shì)。給自己做好定位。看清自己想要發(fā)展的方向。近期可能會(huì)經(jīng)常性的更新基礎(chǔ)的東西。 北京的黃金三月,應(yīng)去年的計(jì)劃,年初換工作,這是回來(lái)之后找工作的第四個(gè)周,目前收到offer一份,在昨天之前我還深深的覺(jué)得自己真的是失敗,菜的不行,...
摘要:歡迎來(lái)我的個(gè)人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開(kāi)啟性能優(yōu)化之旅高性能滾動(dòng)及頁(yè)面渲染優(yōu)化理論寫法對(duì)壓縮率的影響唯快不破應(yīng)用的個(gè)優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁(yè)瞬開(kāi)緩存網(wǎng)頁(yè)性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動(dòng) 歡迎來(lái)我的個(gè)人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開(kāi)啟性能優(yōu)化之旅 高性能滾動(dòng) scroll 及頁(yè)面渲染優(yōu)化 理論 | HTML寫法...
摘要:歡迎來(lái)我的個(gè)人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開(kāi)啟性能優(yōu)化之旅高性能滾動(dòng)及頁(yè)面渲染優(yōu)化理論寫法對(duì)壓縮率的影響唯快不破應(yīng)用的個(gè)優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁(yè)瞬開(kāi)緩存網(wǎng)頁(yè)性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動(dòng) 歡迎來(lái)我的個(gè)人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開(kāi)啟性能優(yōu)化之旅 高性能滾動(dòng) scroll 及頁(yè)面渲染優(yōu)化 理論 | HTML寫法...
摘要:歡迎來(lái)我的個(gè)人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開(kāi)啟性能優(yōu)化之旅高性能滾動(dòng)及頁(yè)面渲染優(yōu)化理論寫法對(duì)壓縮率的影響唯快不破應(yīng)用的個(gè)優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁(yè)瞬開(kāi)緩存網(wǎng)頁(yè)性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動(dòng) 歡迎來(lái)我的個(gè)人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開(kāi)啟性能優(yōu)化之旅 高性能滾動(dòng) scroll 及頁(yè)面渲染優(yōu)化 理論 | HTML寫法...
摘要:前言緣分與巧合,最近接觸比較多的培訓(xùn)機(jī)構(gòu)出來(lái)的人,以及看過(guò)關(guān)于培訓(xùn)機(jī)構(gòu)的文章和問(wèn)答。大部分都對(duì)培訓(xùn)機(jī)構(gòu)很反感,其中還包括一些從培訓(xùn)機(jī)構(gòu)出來(lái)的人。造成這樣的情況,培訓(xùn)機(jī)構(gòu)的功勞無(wú)疑是最大的。 1.前言 緣分與巧合,最近接觸比較多的培訓(xùn)機(jī)構(gòu)出來(lái)的人,以及看過(guò)關(guān)于培訓(xùn)機(jī)構(gòu)的文章和問(wèn)答。雖然沒(méi)在培訓(xùn)機(jī)構(gòu)上過(guò)課,但是接觸過(guò)很多培訓(xùn)機(jī)構(gòu)出來(lái)的人,也看過(guò)一些培訓(xùn)機(jī)構(gòu)的課程。關(guān)于培訓(xùn)機(jī)構(gòu),我也有自己的...
閱讀 1183·2021-09-27 13:34
閱讀 993·2021-09-13 10:25
閱讀 520·2019-08-30 15:52
閱讀 3458·2019-08-30 13:48
閱讀 659·2019-08-30 11:07
閱讀 2180·2019-08-29 16:23
閱讀 2006·2019-08-29 13:51
閱讀 2339·2019-08-26 17:42