广告位联系
返回顶部
分享到

js的变量提升以及使用方法

JavaScript 来源:互联网搜集 作者:网络 发布时间:2018-10-10 08:07:31 人浏览
摘要

今天小编带来js的变量提升以及使用方法。 介绍 变量提升Hoisting是人们对JavaScript执行上下文工作方式的一种认识,并不是官方给出的改变 从字面上理解,变量提升的意思是变量和函数的声明会在物理层移动到作用域的最前面。但是这样理解并不准确,效果是相同

今天小编带来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;

一个复杂一点的例子

ar 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);


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计