摘要:學(xué)堂碼匠計(jì)時(shí)器的第一個(gè)參數(shù),包含幾種不同的書寫方法,可以是函數(shù)名,匿名函數(shù),代碼字符串,還有一些面試題當(dāng)中會(huì)出現(xiàn)函數(shù)調(diào)用的書寫方式。
HTML5學(xué)堂-碼匠:計(jì)時(shí)器的第一個(gè)參數(shù),包含幾種不同的書寫方法,可以是函數(shù)名,匿名函數(shù),JS代碼字符串,還有一些面試題當(dāng)中會(huì)出現(xiàn)“函數(shù)調(diào)用”的書寫方式。
那么,這些不同的書寫方法分別表示什么呢?在計(jì)時(shí)器中出現(xiàn)的第一個(gè)參數(shù),作用域又是在哪里創(chuàng)建的?
計(jì)時(shí)器第一個(gè)參數(shù)的不同寫法 函數(shù)名的書寫方法這是最為常見(jiàn)的一種書寫方法,該方法表示的是,在固定毫秒之后,將這個(gè)函數(shù)名的函數(shù)添加到執(zhí)行隊(duì)列當(dāng)中,讓其執(zhí)行。
字符串式的書寫方法當(dāng)一個(gè)函數(shù)有參數(shù)時(shí),很多人會(huì)采用這樣的調(diào)用方法。
Tips:參數(shù)為文字時(shí),可以用單引號(hào)內(nèi)包雙引,或雙引號(hào)內(nèi)包單引的方式書寫。
setTimeout 和 setInterval 都可以接受字符串(作為第一個(gè)參數(shù)),但是并不推薦使用這種書寫方法。原因在于:為了能夠運(yùn)行,會(huì)在代碼執(zhí)行時(shí),將字符串通過(guò)eval方法進(jìn)行轉(zhuǎn)換。
eval方法,其作用就是把字符串當(dāng)做JS去執(zhí)行。eval雖然能夠解決很多問(wèn)題,有很大的作用,但是也廣為詬病,其性能問(wèn)題,安全性問(wèn)題,以及在JS嚴(yán)格模式與非嚴(yán)格模式的不同。
由于這些缺點(diǎn),使得眾多開(kāi)發(fā)者在項(xiàng)目和代碼中,盡量規(guī)避了對(duì)它的使用。
匿名函數(shù)的書寫方法當(dāng)函數(shù)有參數(shù)要傳遞,而又不能使用字符串式的書寫方法,此時(shí),匿名函數(shù)的書寫方法就派上了用場(chǎng)。
函數(shù)調(diào)用的書寫方法這種書寫方法,本身是錯(cuò)誤的,幾乎在實(shí)際開(kāi)發(fā)當(dāng)中是無(wú)法找到的。當(dāng)然在偶爾會(huì)在面試當(dāng)中以“坑”的形式出現(xiàn)……
此處第一個(gè)函數(shù)會(huì)在執(zhí)行到計(jì)時(shí)器這行代碼時(shí),立即執(zhí)行,而返回的是h5course函數(shù)的返回值,而非函數(shù)本身。如果函數(shù)返回默認(rèn)返回值undefined,setInterval也不會(huì)報(bào)錯(cuò)。
第一個(gè)參數(shù)的作用域歸屬計(jì)時(shí)器的第一個(gè)參數(shù),默認(rèn)在全局作用域中執(zhí)行,因此函數(shù)內(nèi)的 this 將會(huì)指向window。
Tips:運(yùn)行結(jié)果為true
Tips:運(yùn)行結(jié)果為true
來(lái)幾道面試真題練練手 如下代碼打印結(jié)果是什么Tips:答案請(qǐng)見(jiàn)文章底部
碼匠 兩個(gè)字多久會(huì)打印出來(lái)Tips:答案請(qǐng)見(jiàn)文章底部
請(qǐng)說(shuō)出如下代碼運(yùn)行情況Tips:答案請(qǐng)見(jiàn)文章底部
總而言之,言而總之當(dāng)要執(zhí)行的函數(shù)沒(méi)有參數(shù)時(shí),可以直接使用函數(shù)名調(diào)用
當(dāng)需要向回調(diào)函數(shù)中傳遞參數(shù)時(shí),不要使用字符串做參數(shù),使用匿名函數(shù)做參數(shù),并在匿名函數(shù)內(nèi)部執(zhí)行回調(diào)函數(shù)。
第一參數(shù)的函數(shù)會(huì)在全局作用域中進(jìn)行執(zhí)行
第一題:先輸出10,之后大概1秒后,同時(shí)輸出10個(gè)10。
第二題:約1000毫秒(即約1秒)
第三題:在函數(shù)執(zhí)行時(shí),兩個(gè)li的背景顏色立即被設(shè)置為了紅色,經(jīng)過(guò)大概5000毫秒之后,控制臺(tái)報(bào)錯(cuò)(兩個(gè)錯(cuò)誤),錯(cuò)誤內(nèi)容均為“red is not defined”
生活艱辛,代碼不易,但,不要忘記微笑!
梳理JS知識(shí)主干,高效率學(xué)習(xí)JavaScript!版權(quán)聲明:該圖來(lái)自“【美】莉茲·克里莫 (author)”的書籍《你今天真好看》
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88722.html
摘要:運(yùn)用防抖和節(jié)流可以有效降低代碼的執(zhí)行頻率,從而解決高頻率事件的頁(yè)面卡頓問(wèn)題。在階段布局,最終確定顯示的位置和大小。在函數(shù)中,首先定義了一個(gè)空的定時(shí)器變量,用來(lái)計(jì)算時(shí)間間隔。還有一點(diǎn)要注意,在中一定要清楚定時(shí)器,不然會(huì)影響的條件判斷。 啥是節(jié)流? 節(jié)流是保證在一段時(shí)間內(nèi),代碼只執(zhí)行了一次。這個(gè)一段時(shí)間內(nèi)指的是不管用戶操作了幾次,最終僅執(zhí)行一次。比如說(shuō)一個(gè)按鈕,用戶狂點(diǎn)按鈕,但是如果用節(jié)流...
摘要:運(yùn)用防抖和節(jié)流可以有效降低代碼的執(zhí)行頻率,從而解決高頻率事件的頁(yè)面卡頓問(wèn)題。在階段布局,最終確定顯示的位置和大小。在函數(shù)中,首先定義了一個(gè)空的定時(shí)器變量,用來(lái)計(jì)算時(shí)間間隔。還有一點(diǎn)要注意,在中一定要清楚定時(shí)器,不然會(huì)影響的條件判斷。 啥是節(jié)流? 節(jié)流是保證在一段時(shí)間內(nèi),代碼只執(zhí)行了一次。這個(gè)一段時(shí)間內(nèi)指的是不管用戶操作了幾次,最終僅執(zhí)行一次。比如說(shuō)一個(gè)按鈕,用戶狂點(diǎn)按鈕,但是如果用節(jié)流...
摘要:文末評(píng)論送書,學(xué)委會(huì)用這個(gè)抽獎(jiǎng)程序來(lái)進(jìn)行嚴(yán)格抽獎(jiǎng),周六晚上點(diǎn)整定時(shí)抽獎(jiǎng)并視頻公布出來(lái),敬請(qǐng)期待。本文講的函數(shù)值傳遞問(wèn)題,是寫程序經(jīng)常遇到,特別的是動(dòng)態(tài)參數(shù)在高級(jí)框架中使用很廣泛。 ...
閱讀 2468·2021-11-23 09:51
閱讀 1875·2021-10-13 09:40
閱讀 1396·2021-09-30 10:01
閱讀 600·2021-09-26 09:46
閱讀 2260·2021-09-23 11:55
閱讀 1405·2021-09-10 10:51
閱讀 2271·2021-09-09 09:33
閱讀 2238·2019-08-29 17:25