区别JavaScript函数声明与变量声明
作者:laozhang 发布时间:2024-04-18 09:34:42
标签:JavaScript,函数声明,变量声明
今天,又由一到题目引发了一场我跟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)}
足以说明函数提升的更凶一些。


猜你喜欢
- vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐使用axios。前段时间第一次在项目里用到vue,关于登陆问题
- 本文实例讲述了Python 实现的微信爬虫。分享给大家供大家参考,具体如下:单线程版:import urllib.requestimport
- 1.在vue项目根目录下新建vue.config.js(不是在src下面)vue.config.js配置文件:module.exports
- 在工作中遇到过 个问题执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。下面是个简单的实例pip安装 第三方ev
- Sql Server中清空所有数据表中的记录清空所有数据表中的记录:exec sp_msforeachtable @Comman
- 导语哈喽!boys and girls 我是每天疯狂赶代码的木木子~今天带大家来点儿好玩儿的东西,我想你们肯定是喜欢的!上面这个
- 最近在这找了好久的js菜单,都没找到满意的,今天找了个,觉得不错,最重要的是简单,希望大家可以参照一下先看看效果图吧:代码特点:js+css
- Windows 10 x64macOS Sierra 10.12.4Python 2.7准备好装哔~了么,来吧,做个真正意义上的绿色小软件W
- 之前用的Python2,连接MySQL用的是MySQLdb。现在换成python3.x了,由于 MySQLdb 模块还不支持 Python3
- 最近在做一个游戏数据统计后台,最基础的功能是通过分析注册登录日志来展示用户数据。在公司内部测试,用户量很少,所以就没有发现什么性能问题。但是
- 网上商城数据库-用户信息数据操作项目描述在电子商务兴起的大环境下,建立利用互联网开拓销售渠道,帮助企业及时调整商品结构,协助经销商打开货源的
- 环境:A机器和B机器都是LINUX系统,但由于B机器已经空间不足,所以停掉不停操作数据库的服务后 ,准备在A机器进行导出操作。导出语句 ex
- 1、使用empty方法创建数组该方式可以创建一个空数组,dtype可以指定随机数的类型,否则随机采用一种类型生成随机数。import num
- 最近给客户演示程序运行结果,我就想到用Python写一个录屏程序,在网上能找到现成的源码,但是它的录屏是录制整个屏幕的。但是在屏幕桌面下方的
- 字体的处理在网页设计中无论怎么强调也不为过,毕竟网页使用来传递信息的,而最经典最直接的信息传递方式就是文字,所以,了解一点字体的基本知识对于
- 前言:随着编程语言的发展,Go 还很年轻。它于 2009 年 11 月 10 日首次发布。其创建者Robert Griesemer Rob
- 前言WSGI 有三个部分, 分别为服务器(server), 应用程序(application) 和中间件(middleware). 已经知道
- 本文实例讲述了Python实现监控键盘鼠标操作。分享给大家供大家参考,具体如下:# -*- coding: utf-8 -*-import
- 从控制台输入要出的拳 —— 剪刀(0)/石头(1)/布(2) 电脑 **随机*
- 以下是通过Excel 的VBA连接Oracle并操作Oracle相关数据的示例Excel 通过VBA连接数据库需要安装相应的Oracle客户