文档章节

JavaScript中变量/函数提升

年少爱追梦
 年少爱追梦
发布于 2016/08/08 12:43
字数 218
阅读 20
收藏 0

                                                                   JavaScript中变量/函数提升

1.要搞清楚这个问题,必须要知道js中的变量生命周期,js中变量的生命周期是function级别的。

和c或者是java不同,证明如下:

if (true) {
var x = 5;
}
console.log(x);

根据JS中的变量提升,转变结果如下:

var x;
if (true) {
x = 5;
}
console.log(x);

证明变量提升的例子如下:

window.onload = function() {
	var v = 'Hello World';
	(function() {
		alert(v);
		var v = 'I love you';
	})()
}

输出结果为:undefined

变量可以提升,那么问题来了函数可不可以提升呢?

答案是可以,但是函数表达式不可以提升,另外一种是函数声明可以提升

证明例子如下:

函数声明

function myTest(){ 
foo(); 
function foo(){ 
alert("我来自 foo"); 
} 
} 
myTest(); 

函数表达式

function myTest(){ 
foo(); 
var foo =function foo(){ 
alert("我来自 foo"); 
} 
} 
myTest(); 

失败。

© 著作权归作者所有

年少爱追梦
粉丝 35
博文 190
码字总数 119538
作品 0
杭州
程序员
私信 提问
JavaScript变量与函数提升过程详解

先来看两个栗子,下面的两段代码分别输出什么? 答案是:代码段1打印的是1,代码段2打印的是 函数。 为什么会这样呢?这就涉及到js中的变量提升和函数提升的具体过程了。 变量的提升 js是怎么...

Daotin
08/25
0
0
从本质上理解JavaScript中的变量提升

JavaScript中奇怪的一点是你可以在变量和函数声明之前使用它们。就好像是变量声明和函数声明被提升了代码的顶部一样。 然而JavaScript并不会移动你的代码,所以JavaScript中“变量提升”并不...

我听莫扎特
07/23
0
0
26个精选的JavaScript面试问题

译者按: 从各个平台精选整理出26道由浅入深的题目助你面试 原文: Top 26 JavaScript Interview Questions I Wish I Knew 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文...

Fundebug
2018/10/31
0
0
翻译 - JavaScript中的作用域与变量声明提升

本文地址:http://blog.163.com/jinluhz/blog/static/113830152201131132035178/ 原文地址:http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting 原文作者:ben cherry ......

蜗牛奔跑
2015/06/19
44
0
深入理解JavaScript执行上下文和执行栈

前言 如果你是一名 JavaScript 开发者,或者想要成为一名 JavaScript 开发者,那么你必须知道 JavaScript 程序内部的执行机制。执行上下文和执行栈是JavaScript中关键概念之一,是JavaScrip...

浪里行舟
03/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【0911】linux软件包安装和卸载

【0911】linux软件包安装和卸载 一、安装软件包的三种方法 1、rpm工具:与win中的exe安装包类似,红帽子公司包管理系统 2、yum工具:属于一种用python开发的工具,支持自动的安装依赖的包 3、...

飞翔的竹蜻蜓
25分钟前
3
0
【外行学IT】手机网页自适应之rem和viewport

在写手机网页时,对于像素的问题会非常困惑,初学者很多时候会因为那么一个小点的问题解决不了,或者无法理解透彻就放弃了学习。 我在学习写手机网页时也困惑了许久,出现过下面的问题: 图片...

前端老手
36分钟前
5
0
三、Java设计模式之单一职责原则

定义:不要存在多于一个导致类变更的原因。 一个类、接口、方法只负责一项职责 优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险

东风破2019
44分钟前
4
0
搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) KaliArch关注1人评论28269人阅读2017-12-04 21:57:41 MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https:/...

linjin200
今天
6
0
Pandas DataFrame创建方法大全

Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把DataFrame视为一个二维数据表,每一行都表示一个数据记录。本文将介绍创建Pandas DataFrame的6种方法。 创建...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部