码迷,mamicode.com
首页 > Web开发 > 详细

JS中变量名和函数名重名

时间:2019-11-25 14:53:13      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:函数   asc   var   赋值   log   function   fun   变量声明   函数名   

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

 原来

  1. 函数声明会置顶
  2. 变量声明也会置顶
  3. 函数声明比变量声明更置顶
  4. 变量和复制语句一起书写,在js引擎解析时,会将其拆成声明和赋值两个部分,声明置顶,赋值保留在原来的位置
  5. 声明或的变量不会重复声明

实际上这段代码等同于

var a; //函数声明
var a; //变量声明(实际上这里不会重复声明了)
a = function(){ console.log(a); }; //函数赋值
a = 100;//变量赋值(给a重新赋值了)
a()//a is not a function

而如果代码会如下写法则a方法会执行

var a; //函数声明
var a; //变量声明(实际上这里不会重复声明了)
a = 100; 
a=function(){console.log(123)}//函数赋值
a()//123 

  

 

JS中变量名和函数名重名

标签:函数   asc   var   赋值   log   function   fun   变量声明   函数名   

原文地址:https://www.cnblogs.com/Ewarm/p/11927616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!