最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS面試之console的異步性怎么理解詳解

 更新時(shí)間:2022年10月24日 11:24:40   作者:青天訣  
這篇文章主要為大家介紹了JS面試之console的異步性怎么理解詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

面試題目(字節(jié)):

console的異步性怎么理解?

答案解析:

console我一直以為是同步執(zhí)行的,直到在一本書(shū)上看到,才了解到console本身有異步的特性。雖然在平常開(kāi)發(fā)中經(jīng)常使用console,但是真的沒(méi)有意識(shí)到它的異步性。

下面就看下異步的實(shí)例

基礎(chǔ)類(lèi)型

該類(lèi)型是我們開(kāi)發(fā)中經(jīng)常使用的,正是這種打印結(jié)果,讓我們認(rèn)為console是同步的。其實(shí)這種case也是異步的,因?yàn)閳?zhí)行到console時(shí),拍攝了快照,記錄了當(dāng)時(shí)的變量值,當(dāng)代碼執(zhí)行完返回到事件隊(duì)列時(shí),直接打印了前面記錄的快照造成的。

let foo = 'bar';
console.log(foo);
foo = 'test';

引用類(lèi)型

引用類(lèi)型,可以幫我們很好的驗(yàn)證console的異步性??聪聢D中的打印結(jié)果,如果是同步的話,打印結(jié)果應(yīng)該時(shí){},但是卻是修改后的值{foo: 'bar'}。

主要是因?yàn)?,obj是引用類(lèi)型,執(zhí)行到console時(shí),只是存儲(chǔ)了對(duì)象的引用,對(duì)于對(duì)象內(nèi)部的值未做記錄。當(dāng)代碼執(zhí)行完后,obj內(nèi)部的值已經(jīng)被修改。返回事件隊(duì)列后,打印出的結(jié)果實(shí)際是修改后的值。

let obj = {};
console.log(obj);
obj.foo = 'bar';

結(jié)論

以上示例,都是在瀏覽器中的表現(xiàn),也就是瀏覽器中console實(shí)際是異步快照,node中的console是另一回事,它是嚴(yán)格同步的,因此同樣的代碼打印結(jié)果是{}。

瀏覽器之所以這樣,是因?yàn)?,在許多程序中,I/O被認(rèn)為是低速的阻塞環(huán)節(jié)。在瀏覽器中,console.log會(huì)被異步處理以提高性能

下面再看兩道題目加深下理解

第一道

a = [1, 2, 3];
console.log(a, a.pop());

[1, 2], 3

第二道

這道題目很有特點(diǎn),打印結(jié)果,展開(kāi)前后值是不一樣的。

person = {
	name: "張三",
	age: 18,
};
console.log(person);
person.name = "李四";
console.log(person);

當(dāng)console.log輸出內(nèi)容為對(duì)象,指向的是對(duì)象的地址,當(dāng)點(diǎn)開(kāi)對(duì)象進(jìn)行查看時(shí),才會(huì)去訪問(wèn)相應(yīng)地址獲取內(nèi)容。所以點(diǎn)開(kāi)對(duì)象后,會(huì)重新訪問(wèn)對(duì)象地址進(jìn)行查詢(xún),因此之前的張三,變成了李四

以上就是JS面試之console的異步性怎么理解詳解的詳細(xì)內(nèi)容,更多關(guān)于JS面試console異步性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

大关县| 嘉禾县| 吉林省| 星子县| 临汾市| 彭阳县| 临高县| 云阳县| 临高县| 营口市| 元朗区| 开阳县| 巴彦淖尔市| 库尔勒市| 漠河县| 武宣县| 台东市| 禹城市| 丰都县| 张家口市| 浦城县| 佛坪县| 浑源县| 梨树县| 宿迁市| 宜春市| 东平县| 辰溪县| 夹江县| 南漳县| 衢州市| 汪清县| 苗栗县| 叙永县| 阜南县| 长泰县| 江山市| 垣曲县| 大理市| 凤台县| 黎平县|