区别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实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
一款JavaScript压缩工具:X2JSCompactor
Jun 13 Javascript
jQuery新闻滚动插件 jquery.roller.js
Jun 27 Javascript
JS实现根据当前文字选择返回被选中的文字
May 21 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
vue2.0安装style/css loader的方法
Mar 14 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 Javascript
ES6 Promise对象的应用实例分析
Jun 27 Javascript
微信小程序获取用户绑定手机号方法示例
Jul 21 Javascript
js实现小球在页面规定的区域运动
Jun 16 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
一个PHP+MSSQL分页的例子
2006/10/09 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
jstree的简单实例
2016/12/01 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
银行求职信个人范文
2013/12/16 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
工作收入住址证明
2014/10/28 职场文书
公司内部升职自荐信
2015/03/27 职场文书
学习焦裕禄观后感
2015/06/09 职场文书