2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

使用JavaScript關(guān)鍵字進(jìn)行相關(guān)命名產(chǎn)生的bug問題

2022-07-18 23:46 欄目:技術(shù)開發(fā) 查看(7662)

剛剛在群里看到一個(gè)提問,大概問題就是:我寫的一個(gè)方法,在某個(gè)元素上使用onclick事件調(diào)用,結(jié)果無效,打開控制臺(tái)發(fā)現(xiàn)報(bào)錯(cuò)”Uncaught SyntaxError: Unexpected token ‘switch’ (at”。根據(jù)筆者經(jīng)驗(yàn),這一般是使用了switch這個(gè)JavaScript關(guān)鍵字導(dǎo)致的。

微信截圖_20220718232409

但處于謹(jǐn)慎,我還是回復(fù)了疑似關(guān)鍵字問題,要求提供代碼,結(jié)果發(fā)送過來的代碼也證實(shí)是這個(gè)問題。簡化后的代碼如下:

<script>
 let switch=function(){ 
    console.log('ok');
 } 
 </script>
<a href="JavaScript:" onclick="switch();">TEST</a>

類似的問題筆者在社區(qū)或群中已經(jīng)給好幾個(gè)人解答過了,所以干脆記錄以下,以后有問到的直接甩這篇短文給他即可了。

這就是一個(gè)非常典型的誤使用JavaScript的關(guān)鍵字作為方法名導(dǎo)致的錯(cuò)誤,這種問題一般出現(xiàn)在基本功不夠扎實(shí)的新人身上。跟其他開發(fā)語言一樣,JavaScript有不少內(nèi)置的關(guān)鍵字,在語法上每個(gè)關(guān)鍵字都會(huì)有其獨(dú)特的含義。因此,Javascript關(guān)鍵字是不能作為變量名和函數(shù)名使用的;使用Javascript關(guān)鍵字作為變量名或函數(shù)名,會(huì)使Javascript在載入過程中出現(xiàn)編譯錯(cuò)誤。所以,不能把關(guān)鍵字、保留字、true、false和null用作標(biāo)識(shí)符。

1、常見的JavaScript關(guān)鍵字

break、else、new、var、case、finally、return、void、catch、for、switch、while、continue、function、this、with、default、if、throw、delete、in、try、do、instranceof、typeof、let、const等。

2、常見的JavaScript保留字

abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private 、transient、debugger、implements、protected 、volatile、double、import、public等。

關(guān)鍵字的內(nèi)容并不是一成不變的,隨著JavaScript版本的提升,關(guān)鍵字也會(huì)隨之發(fā)生變化,比如let和const等為關(guān)鍵字是在ES2015新增的。

這個(gè)也讓我想起曾經(jīng)有一個(gè)新人提問為何他明明定義了一個(gè)方法,卻JavaScript控制臺(tái)報(bào)錯(cuò)方法不存在,如下圖報(bào)錯(cuò):

微信截圖_20220718233904

這個(gè)報(bào)錯(cuò)很顯然是由于不當(dāng)使用了JavaScript自帶的方法search()而造成的,search() 方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。這個(gè)類似php的list等方法,如果在代碼中使用list命名方法編輯器會(huì)立馬提示錯(cuò)誤也運(yùn)行不了。

其實(shí)所有編程語言都包含其獨(dú)特的關(guān)鍵字或保留字,很多語言都包含一些共同的關(guān)鍵字,比如try、if、else、caet、return、switch等,論是從編碼規(guī)范還是從軟件的兼容性考慮,都非常不建議使用關(guān)鍵字和保留字作為變量名和函數(shù)名使用。所以,我們?cè)谑褂媚撤N語言的時(shí)候,需要?jiǎng)?wù)必了解清楚其常見的關(guān)鍵詞和保留字,很多關(guān)鍵字或保留字在不同語言中會(huì)重復(fù)出現(xiàn),只有一部分差異。

 

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請(qǐng)注明出處:使用JavaScript關(guān)鍵字進(jìn)行相關(guān)命名產(chǎn)生的bug問題 - 微構(gòu)網(wǎng)絡(luò)
分享:
苗栗市| 嘉定区| 淮北市| 肇庆市| 博爱县| 宿迁市| 白水县| 获嘉县| 沅陵县| 高邮市| 汉寿县| 蚌埠市| 休宁县| 海城市| 尉犁县| 和平区| 扎鲁特旗| 泰州市| 临泽县| 台中县| 德格县| 德阳市| 南宁市| 开化县| 习水县| 东海县| 阜平县| 阜阳市| 黄陵县| 伊吾县| 古丈县| 泉州市| 南和县| 红安县| 尚义县| 海伦市| 三台县| 长武县| 聂荣县| 黑水县| 赤水市|