当前位置:主页 > javascript教程 > 详谈js的变量提升以及使用方法

js的变量提升及实例用法

发布:2020-02-05 10:01:55 155


给网友朋友们带来一篇javascript相关的编程文章,网友逢景胜根据主题投稿了本篇教程内容,涉及到js、变量提升、详谈js的变量提升以及使用方法相关内容,已被535网友关注,涉猎到的知识点内容可以在下方电子书获得。

详谈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);

 


参考资料

相关文章

  • Vue.js父与子组件之间传参示例

    发布:2022-06-28

    给大家整理一篇关于Vue.js的教程,本篇文章主要介绍了Vue.js父与子组件之间传参示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • node.js中Socket.IO的技巧分享

    发布:2020-02-03

    这篇文章主要介绍了node.js中Socket.IO的进阶使用技巧,本文讲解了配置、房间、事件、授权等内容,需要的朋友可以参考下


  • 深入理解JS设计模式之访问者模式定义与用法

    发布:2020-01-29

    这篇文章主要介绍了JS设计模式之访问者模式定义与用法,结合实例形式分析了javascript设计模式中访问者模式的概念、功能、应用场景及使用方法,需要的朋友可以参考下


  • 实例详解使用InstantClick.js让页面提前加载200ms

    发布:2020-03-16

    本篇文章主要介绍了使用InstantClick.js让页面提前加载200ms,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • js的基本数据类型和typeof类型

    发布:2020-02-17

    下面小编就为大家带来一篇浅谈js基本数据类型和typeof。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • Node.js服务器作为api服务器的解决方案

    发布:2019-11-27

    本篇文章主要介绍了详解本地Node.js服务器作为api服务器的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。


  • JavaScript Canvas绘制圆形时钟效果代码实例

    发布:2020-03-17

    这篇文章主要为大家详细介绍了JavaScript Canvas绘制圆形时钟效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • js实现登录注册框手机号和验证码校验的前端部分代码

    发布:2020-02-14

    这篇文章主要为大家详细介绍了js实现登录注册框手机号和验证码校验的前端部分代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


网友讨论