区别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 相关文章推荐
限制复选框的最大可选数
Jul 01 Javascript
JS判断移动端访问设备并加载对应CSS样式
Jun 13 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
Jul 05 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
Jan 04 Javascript
node.js遍历目录的方法示例
Aug 01 Javascript
JavaScript类型相关的常用操作总结
Feb 14 Javascript
原生js无缝轮播插件使用详解
Mar 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中基本符号及使用方法
2010/03/23 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
python append、extend与insert的区别
2016/10/13 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
恶搞卫生巾广告词
2014/03/18 职场文书
营销总监岗位职责
2014/09/16 职场文书
python实现的web监控系统
2021/04/27 Python
python自动化八大定位元素讲解
2021/07/09 Python
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python