JS中变量名和函数名重名

转载 2018年04月17日 21:25:46

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

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重新赋值了,所以会报错.


转载来自:https://www.cnblogs.com/bugda/p/6036282.html

js中函数与变量名重名

alert(a); a(); var a=3; function a(){ alert(10); } alert(a); a=6; a(); sf上翻文章,看到这道题,先答题后co...
  • fangfanggaogao
  • fangfanggaogao
  • 2017-10-24 16:36:56
  • 259

JS变量名和函数名的提升

要点)函数声明是函数的声明和实现都被提升了。            函数表达式和变量表达式只是其声明被提升了。 今天有个朋友问了一个问题: 这个结果打印出来是:a 不是一个函数。 当我看...
  • u013592575
  • u013592575
  • 2017-08-04 19:44:22
  • 849

变量名、函数名、形参相同的情况

1.  变量和函数重名时,如果变量声明未赋值,则变量名被忽略,取函数(function (a) { console.log(a); var a = 10; function a...
  • qiqi_77_
  • qiqi_77_
  • 2018-02-26 19:08:08
  • 90

js中避免函数名和变量名跟别人冲突(1)

方法1:(function(){ var m = 0; var n = 1; function getName(){ ...
  • ForMyQianDuan
  • ForMyQianDuan
  • 2016-08-04 14:05:14
  • 1253

js中避免函数名和变量名跟别人冲突

方式1:var mainNS={}; mainNS.Person = { id: name: $d:$('#s1'); fn1: fn2:function(){...
  • ForMyQianDuan
  • ForMyQianDuan
  • 2016-08-04 18:15:52
  • 2223

JavaScript 重名的函数和对象

JavaScript 允许重复声明变量,后声明的覆盖之前的。var a = 1; var a = 'x'; console.log(a); //输出'x'JavaScript允许重复定义函数。 Jav...
  • chy555chy
  • chy555chy
  • 2017-03-17 15:26:04
  • 1791

C++与C#对比学习:函数(三)函数名与变量名同名问题

函数重载与函数重名   函数重名 我们知道在相同的作用域中,不能定义两个名字相同的变量.那同样也不能定义两个"名字相同"的函数.不过我们判断两个函数是否同名不是仅仅根据函数名,而是根据函数签名....
  • weiwenhp
  • weiwenhp
  • 2012-10-13 21:31:15
  • 3844

Python中使用内建函数名作为变量标识符

dict={x=1,y=2} #变量会覆盖python中的built-in函数dict() dict1=dict(x=3,y=4) TypeError: 'dict' object is not c...
  • e15273
  • e15273
  • 2018-03-18 09:15:53
  • 35

多个js中如何避免方法名重复

我想很多人面试的时候都会遇到这个问题,在最开始进入it行业的时候其实我也不懂该怎么回答,后来很多人告诉我用闭包,然后再有面试我就直接回答闭包,但其实我自己并不是太明白闭包的概念,也根本不了解它是如何来...
  • accumulation_dh1992
  • accumulation_dh1992
  • 2015-11-10 10:16:22
  • 2800

Python变量函数:函数名存在变量中

转自: http://www.pythonclub.org/functions/variable-function-name   在PHP等语言中有变量函数(Variable Function)...
  • wdt3385
  • wdt3385
  • 2013-03-22 20:13:09
  • 1810
收藏助手
不良信息举报
您举报文章:JS中变量名和函数名重名
举报原因:
原因补充:

(最多只允许输入30个字)