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


Posted in Javascript onFebruary 13, 2017

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

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 相关文章推荐
javascript之dhDataGrid Ver2.0.0代码
Jul 01 Javascript
extjs grid取到数据而不显示的解决
Dec 29 Javascript
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
element-ui 关于获取select 的label值方法
Aug 24 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 #Javascript
js实现打地鼠小游戏
Feb 13 #Javascript
canvas实现钟表效果
Feb 13 #Javascript
深入理解Javascript箭头函数中的this
Feb 13 #Javascript
ES6学习之变量的解构赋值
Feb 12 #Javascript
AngularJS实现路由实例
Feb 12 #Javascript
jQuery文字轮播特效
Feb 12 #Javascript
You might like
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
layui表格实现代码
2017/05/20 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
深入理解Python中的super()方法
2017/11/20 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
用Django写天气预报查询网站
2018/10/21 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
python生成随机红包的实例写法
2019/09/02 Python
python 并发下载器实现方法示例
2019/11/22 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python表达式的优先级详解
2020/02/18 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
简述数据库的设计过程
2015/06/22 面试题
大学生毕业自我鉴定范文
2013/11/03 职场文书
电子商务专业自我鉴定
2013/12/18 职场文书
生产厂长岗位职责
2014/02/21 职场文书
中学教代会开幕词
2016/03/04 职场文书