区别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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
javascript的函数作用域
Nov 12 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
详谈DOM简介及节点、属性、查找节点的方法
Nov 16 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
vue 中 命名视图的用法实例详解
Aug 14 Javascript
JavaScript制作3D旋转相册
Aug 02 Javascript
24个解决实际问题的ES6代码片段(小结)
Feb 02 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
Node.js API详解之 net模块实例分析
May 18 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 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一些有意思的小区别
2006/12/06 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python pyheatmap包绘制热力图
2018/11/09 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
python为什么会环境变量设置不成功
2020/06/23 Python
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
车队司机自我鉴定
2014/03/02 职场文书
信息管理应届生求职信
2014/03/07 职场文书
食品安全工作实施方案
2014/03/26 职场文书
大学三年计划书范文
2014/04/30 职场文书
入党积极分子考察意见
2015/06/02 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
婚礼父母致辞
2015/07/28 职场文书
python异常中else的实例用法
2021/06/15 Python