使用JavaScript关键字进行相关命名产生的bug问题

2022-07-18 23:46 栏目:技术开发 查看(4472)

刚刚在群里看到一个提问,大概问题就是:我写的一个方法,在某个元素上使用onclick事件调用,结果无效,打开控制台发现报错”Uncaught SyntaxError: Unexpected token ‘switch’ (at”。根据笔者经验,这一般是使用了switch这个JavaScript关键字导致的。

微信截图_20220718232409

但处于谨慎,我还是回复了疑似关键字问题,要求提供代码,结果发送过来的代码也证实是这个问题。简化后的代码如下:

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

类似的问题笔者在社区或群中已经给好几个人解答过了,所以干脆记录以下,以后有问到的直接甩这篇短文给他即可了。

这就是一个非常典型的误使用JavaScript的关键字作为方法名导致的错误,这种问题一般出现在基本功不够扎实的新人身上。跟其他开发语言一样,JavaScript有不少内置的关键字,在语法上每个关键字都会有其独特的含义。因此,Javascript关键字是不能作为变量名和函数名使用的;使用Javascript关键字作为变量名或函数名,会使Javascript在载入过程中出现编译错误。所以,不能把关键字、保留字、true、false和null用作标识符。

1、常见的JavaScript关键字

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等。

关键字的内容并不是一成不变的,随着JavaScript版本的提升,关键字也会随之发生变化,比如let和const等为关键字是在ES2015新增的。

这个也让我想起曾经有一个新人提问为何他明明定义了一个方法,却JavaScript控制台报错方法不存在,如下图报错:

微信截图_20220718233904

这个报错很显然是由于不当使用了JavaScript自带的方法search()而造成的,search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。这个类似php的list等方法,如果在代码中使用list命名方法编辑器会立马提示错误也运行不了。

其实所有编程语言都包含其独特的关键字或保留字,很多语言都包含一些共同的关键字,比如try、if、else、caet、return、switch等,论是从编码规范还是从软件的兼容性考虑,都非常不建议使用关键字和保留字作为变量名和函数名使用。所以,我们在使用某种语言的时候,需要务必了解清楚其常见的关键词和保留字,很多关键字或保留字在不同语言中会重复出现,只有一部分差异。

 

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:使用JavaScript关键字进行相关命名产生的bug问题 - 微构网络
分享: