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

相关文章

  • JavaScript驾驭网页-DOM

    JavaScript驾驭网页-DOM

    这篇文章主要介绍了JavaScript驾驭网页-DOM的相关资料,需要的朋友可以参考下
    2016-03-03
  • 微信小程序连接MySQL数据库的全过程

    微信小程序连接MySQL数据库的全过程

    微信小程序是不能直接连接数据库进行数据操作的,这是出于安全的考虑,下面这篇文章主要给大家介绍了关于微信小程序连接MySQL数据库的全过程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • 分享一个自己写的table表格排序js插件(高效简洁)

    分享一个自己写的table表格排序js插件(高效简洁)

    在前不久做的一个web项目中,需要实现js表格排序的效果,当时为了省事,就在网上找了几个相关的js插件
    2011-10-10
  • uni-app小程序中父组件和子组件传值的实现实例

    uni-app小程序中父组件和子组件传值的实现实例

    uniapp父子组件引用传值,和vue的一样,没有小程序那样的麻烦,下面这篇文章主要给大家介绍了关于uni-app小程序中父组件和子组件传值的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • JS实现左边列表移到到右边列表功能

    JS实现左边列表移到到右边列表功能

    这篇文章主要介绍了JS实现左边列表移到到右边列表功能,实现功能主要是左边的下拉框内容添加到右边的下拉框,支持多选移动,且同时将右边的下拉框对象移除,需要的朋友可以参考下
    2018-03-03
  • JavaScript 关于元素获取焦点(隐藏元素与div)

    JavaScript 关于元素获取焦点(隐藏元素与div)

    关于元素获取焦点要注意2个小问题,需要的朋友可以参考下。
    2011-01-01
  • js正则表达式匹配数字字母下划线等

    js正则表达式匹配数字字母下划线等

    本文给大家分享的是使用正则表达式检测只含有汉字、数字、字母、下划线等示例,非常的简单实用,这里推荐给大家,有需要的小伙伴参考下。
    2015-04-04
  • Spring mvc 接收json对象

    Spring mvc 接收json对象

    这篇文章主要介绍了Spring mvc 接收json数据的相关资料,需要的朋友可以参考下
    2015-12-12
  • 原生JS获取URL链接参数的几种常见方法

    原生JS获取URL链接参数的几种常见方法

    这篇文章主要给大家介绍了关于利用原生JS获取URL链接参数的几种常见方法,文中通过实例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • 微信小程序实现获取手机号60s倒计时

    微信小程序实现获取手机号60s倒计时

    这篇文章主要为大家详细介绍了微信小程序实现获取手机号60s倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07

最新评论