浅谈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 相关文章推荐
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
详解jQuery选择器
Dec 21 Javascript
基于JS实现仿百度百家主页的轮播图效果
Mar 06 Javascript
vue组件间通信子与父详解(二)
Nov 07 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
使用vue重构资讯页面的实例代码解析
Nov 26 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 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 Smarty生成EXCEL文档的代码
2008/08/23 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
Javascript开发包大全整理
2006/12/22 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
python实现按行切分文本文件的方法
2016/04/18 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
详解python中eval函数的作用
2019/10/22 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
投标保密承诺书
2014/05/19 职场文书
毕业生工作求职信
2014/06/30 职场文书
文员岗位职责
2015/02/04 职场文书
公司慰问信范文
2015/03/23 职场文书
关于倡议书的范文
2015/04/29 职场文书
小学教学工作总结2015
2015/05/13 职场文书
活动费用申请报告
2015/05/15 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
市场营销计划书
2019/04/24 职场文书
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL