区别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 NameSpace 简单说明介绍
Jul 18 Javascript
javascript中的作用域和上下文使用简要概述
Dec 05 Javascript
解释&&和||在javascript中的另类用法
Jul 28 Javascript
什么是JavaScript中的结果值?
Oct 08 Javascript
禁用backspace网页回退功能的实现代码
Nov 15 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
webpack入门+react环境配置
Feb 08 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
May 27 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 Javascript
详解React服务端渲染从入门到精通
Mar 28 Javascript
Node配合WebSocket做多文件下载以及进度回传
Nov 07 Javascript
javascript实现移动端轮播图
Dec 09 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中var_export与var_dump的区别分析
2010/08/21 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
php实现Mysql简易操作类
2015/10/11 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
详解爬虫被封的问题
2019/04/23 Python
Python中的面向接口编程示例详解
2021/01/17 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
国旗下演讲稿
2014/05/08 职场文书
教师节宣传方案
2014/05/23 职场文书
创先争优活动个人总结
2015/03/04 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL