区别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 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 Javascript
Bootstrap每天必学之进度条
Nov 30 Javascript
Jquery使用小技巧汇总
Dec 29 Javascript
轻松实现JavaScript图片切换
Jan 12 Javascript
深入分析Javascript事件代理
Jan 30 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
微信小程序滚动Tab实现左右可滑动切换
Aug 17 Javascript
微信小程序中进行地图导航功能的实现方法
Jun 29 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
Dec 25 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图片上传代码
2013/11/04 PHP
php递归创建目录的方法
2015/02/02 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
深入理解Python中的元类(metaclass)
2015/02/14 Python
python爬虫爬取网页表格数据
2018/03/07 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python shelve模块实现解析
2019/08/28 Python
python输入错误后删除的方法
2019/10/12 Python
Opencv求取连通区域重心实例
2020/06/04 Python
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
日化店促销方案
2014/03/26 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
老公出轨后的保证书
2015/05/08 职场文书
高一化学教学反思
2016/02/22 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
教你部署vue项目到docker
2022/04/05 Vue.js