在本专栏中小编给大家整理了关于js的变量提升以及使用方法的相关知识点内容,需要的朋友们参考下。

介绍

变量提升Hoisting是人们对JavaScript执行上下文工作方式的一种认识,并不是官方给出的改变

从字面上理解,变量提升的意思是变量和函数的声明会在物理层移动到作用域的最前面。但是这样理解并不准确,效果是相同的,但是实际的实现方式是JavaScript的变量和函数的声明会在编译阶段放入内存

这意味着使用者在正式声明一个函数或者变量之前就能够使用它

函数的提升

在JavaScript中,在声明一个函数前,我们就能够使用它,大家应该都体验过,像这样:

test();

 

function test() {

  // do something

}

在正常的使用情况下,应该需要先声明函数才能调用,但是这种方法仍然能够运行,这是因为JavaScript自动将函数声明事先存入了内存的原因,看起来就像JavaScript自动把函数声明提升到了最前面

变量的提升

对于变量,JavaScript使用类似的方法,但是要注意一点的是,对于变量的提升,JavaScript只会将变量声明提升,但是不会把初始化提升,如果在变量初始化之前使用,则会得到undefined

// undefined

console.log(a);

// ReferenceError: b is not defined

console.log(b);

var a = 10;
// undefined

console.log(num);

num = 6;

// 6

console.log(num);

num += 7;

// 13

console.log(num);

var num;
// undefined

console.log(num);

num = 1;

// 1

console.log(num);

var num = 2;

// 2

console.log(num);

这里要注意,JavaScript的变量提升是针对var的,而let和const不存在变量提升这一特性

// ReferenceError: a is not defined

console.log(a);

let a = 10;

一个复杂一点的例子

var a = 100;

function fn() {

  // undefined

  console.log(a);

  var a = 200;

  // 200

  console.log(a);

}

fn();

// 100

console.log(a);

var a;

// 100

console.log(a);

// 300

var a = 300;

console.log(a);
最新资讯
直击|雷军称小米9将首发高通855 还强调“真首发”

直击|雷军称小米9将首

雷军今日在微博透露,即将发布的小米9将搭载高通最新旗
直击|滴滴宣布过冬:将裁员15% 涉及员工超2000人

直击|滴滴宣布过冬:将

对业务重组带来的岗位重叠和绩效不达标的员工进行减员
福特与大众协商取得进展 Argo AI估值或达40亿美元

福特与大众协商取得进

大众汽车发言人在电话中表示,公司正持续与福特进行建设
版权到期仍播放 《布鲁精灵》方诉优酷侵权索赔26万

版权到期仍播放 《布

原告要求优酷立即停止《布鲁精灵》的在线播放及下载服
TCL首次回购股份:回购1827万股 支付金额约6100万

TCL首次回购股份:回购1

TCL(000100.SZ)发布公告称,公司以集中竞价方式回购股份18
美开发可自动调节冷暖的面料 有望用于制造智能衣服

美开发可自动调节冷暖

美国马里兰大学一个研究团队日前在美国《科学》杂志上
最新文章
微信小程序CSS3动画下拉菜单效果

微信小程序CSS3动画下

这篇文章主要为大家详细介绍了微信小程序CSS3动画下拉
微信小程序使用swiper组件实现层叠轮播图

微信小程序使用swiper

这篇文章主要为大家详细介绍了微信小程序使用swiper组
微信小程序实现带缩略图轮播效果

微信小程序实现带缩略

这篇文章主要为大家详细介绍了微信小程序实现带缩略图
小程序实现五星点评效果

小程序实现五星点评效

这篇文章主要为大家详细介绍了小程序实现五星点评效果
微信小程序实现笑脸评分功能

微信小程序实现笑脸评

这篇文章主要为大家详细介绍了微信小程序实现笑脸评分
微信小程序自定义轮播图

微信小程序自定义轮播

这篇文章主要为大家详细介绍了微信小程序自定义轮播图