区别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"代码
Jan 09 Javascript
让你的网站可编辑的实现js代码
Oct 19 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
Dec 02 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
VUE前后端学习tab写法实例
Aug 06 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 Javascript
Element中Slider滑块的具体使用
Jul 29 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常用函数小技巧
2008/09/11 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
js 获取、清空input type="file"的值示例代码
2014/02/19 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python和shell获取文本内容的方法
2018/06/05 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
实例详解Python装饰器与闭包
2019/07/29 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
好的自荐信包括什么内容
2013/11/07 职场文书
向领导表决心的话
2014/03/11 职场文书
社区消防工作实施方案
2014/03/21 职场文书
学校春季防火方案
2014/06/08 职场文书
工作散漫检讨书
2014/09/16 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
Win2008系统搭建DHCP服务器
2022/06/25 Servers