区别JavaScript函数声明与变量声明


Posted in Javascript onSeptember 12, 2018

今天,又由一到题目引发了一场我跟JS基础的较量:首先是

var getName = function(){alert(1)};
function getName(){alert(2)};
getName();// 1

or

function getName(){alert(2)};
var getName = function(){alert(1)};
 
getName();// 1

为什么我调换声明顺序,结果还是输出以 var 形式声明的函数的值?

有人回答我说 "啊,变量提升呀...",我最开始的理解,就算变量提升,第一种情况提升之后,应该是这样啊:

var getName;
getName = function(){alert(1)};
function getName(){alert(2)};

最后应该输出 2 才对啊(很理直气壮)。

殊不知不只有var声明才会提前,以function fn(){}这种形式声明的函数,会被提升到作用域的最最顶部,然后再是变量的提升。
具体请看下面例子:

fn();//Uncaught TypeError: fn is not a function
var fn = function(){console.log(1)};

but

fn();//2
var fn = function(){console.log(1)};
function fn(){console.log(2)}

足以说明函数提升的更凶一些。

Javascript 相关文章推荐
JavaScript中void(0)的具体含义解释
Feb 27 Javascript
jQuery实现的原图对比窗帘效果
Jun 15 Javascript
Jquery焦点图实例代码
Nov 25 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
Vue.js样式动态绑定实现小结
Jan 24 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
9个JavaScript日常开发小技巧
Oct 06 Javascript
详解js中Array的方法及技巧
Sep 12 #Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 #Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 #Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 #Javascript
vue服务端渲染缓存应用详解
Sep 12 #Javascript
angularjs中判断ng-repeat是否迭代完的实例
Sep 12 #Javascript
如何解决React官方脚手架不支持Less的问题(小结)
Sep 12 #Javascript
You might like
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
职位说明书范文
2014/05/07 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
行政撤诉申请书
2015/05/18 职场文书
如何撰写促销方案?
2019/07/05 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL