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

 更新时间:2017年02月13日 08:45:01   投稿:jingxian  
下面小编就为大家带来一篇浅谈js中的变量名和函数名重名。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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中的变量名和函数名重名就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 比较详细的XMLDOM对象方法详解

    比较详细的XMLDOM对象方法详解

    主要介绍了一些xml dom对象的使用方法
    2008-08-08
  • IE php关于强制下载文件的代码

    IE php关于强制下载文件的代码

    这个东东,把我搞得晕晕乎乎的,FF下,没有强制下载文件这个问题。
    2008-08-08
  • js实现抽奖效果

    js实现抽奖效果

    本文主要介绍了js实现抽奖效果的方法实例。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • js中位数不足自动补位扩展padLeft、padRight实现代码

    js中位数不足自动补位扩展padLeft、padRight实现代码

    这篇文章主要介绍了js中位数不足自动补位扩展之padLeft、padRight实现方法,主要是通过String.prototype扩展实现,需要的朋友可以参考下
    2020-04-04
  • js实现双击图片放大单击缩小的方法

    js实现双击图片放大单击缩小的方法

    这篇文章主要介绍了js实现双击图片放大单击缩小的方法,涉及js操作图片及onclick与ondblclick事件的使用技巧,需要的朋友可以参考下
    2015-02-02
  • 微信小程序学习笔记之文件上传、下载操作图文详解

    微信小程序学习笔记之文件上传、下载操作图文详解

    这篇文章主要介绍了微信小程序学习笔记之文件上传、下载操作,结合实例形式分析了微信小程序图片文件传输的原理、步骤及后台php操作相关实现技巧,并结合图文形式予以详细说明,需要的朋友可以参考下
    2019-03-03
  • JS实现的小火箭发射动画效果示例

    JS实现的小火箭发射动画效果示例

    这篇文章主要介绍了JS实现的小火箭发射动画效果,涉及javascript基于时间函数的页面元素属性动态变换实现运动效果相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • 详解Webpack loader 之 file-loader

    详解Webpack loader 之 file-loader

    这篇文章主要介绍了详解Webpack loader 之 file-loader,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • JavaScript实现统计文本框Textarea字数增强用户体验

    JavaScript实现统计文本框Textarea字数增强用户体验

    现在流行的Twitter等微博客网站,有一个很好的用户体验,就是在文本框中输入文字的时候,会自动统计输入的字符,并显示用户还能输入的字符,在限制了140个字的微博客中,这样的小提示可以很好的增强用户体验,本文也尝试着实现一下
    2012-12-12
  • JS定义类的六种方式详解

    JS定义类的六种方式详解

    下面小编就为大家带来一篇JS定义类的六种方式详解。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧,祝大家游戏愉快哦
    2016-05-05

最新评论