浅谈js中的变量名和函数名重名

时间:2021-05-18

今天骚凯问了一道变量名冲突的题目,感觉很有意思,顺便也复习一下预解析的一些知识,有不对的地方忘前辈大神指正,题目是这样的:

var a=100;function a(){  console.log(a);}a();

这个串代码执行完会报错 : a is not a function

问题来了,为什么会报这个错误呢? 这里涉及到函数和变量的预解析:

1)函数声明会置顶

2)变量声明也会置顶

3)函数声明比变量声明更置顶:(函数在变量上面)

4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置

5)声明过的变量不会重复声明

知道以上的规则,上面的代码等同于 :

var a=function (){  console.log(a);}var a=100;a();

相当于给a重新赋值了,所以会报错。

以上这篇浅谈js中的变量名和函数名重名就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章