详解javascript中的变量提升和函数提升

 更新时间:2018年05月24日 08:59:58   作者:歆冉  
这篇文章主要介绍了详解javascript中的变量提升和函数提升的相关资料,需要的朋友可以参考下

1在js中只有两种作用域

a:全局作用域

b:函数作用域

在ES6之前,js是没有块级作用域。

首先来解释一下什么是没有块级作用域?

所以此时 是可以打印输出变量a的值。

2:什么是变量提升?

在我们的js中,代码的执行时分两步走的,1、解析 2、一步一步执行

那么变量提升就是变量声明会被提升到作用域的最顶上去,也就是该变量不管是在作用域的哪个地方声明的,都会提升到作作用域的最顶上去。

那么上面这种写法其实等价于下面这种写法:

看几个例子:

把上面的例子稍作改动:

结果就会大不一样,

再看一个例子:

3:什么是函数提升?

输出的结果是:

注意:函数声明式,会将函数的声明和定义一起提升到作用域的最顶上去。

如果是这种写法:函数表达式声明的函数

例子:

输出的结果是:

最后的总结:

1:所有的声明都会提升到作用域的最顶上去。

2:同一个变量只会声明一次,其他的会被忽略掉。

3:函数声明的优先级高于变量申明的优先级,并且函数声明和函数定义的部分一起被提升。

相关文章

  • ES6基础语法之数组拓展

    ES6基础语法之数组拓展

    这篇文章介绍了ES6基础语法之数组拓展,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 全面分析JavaScript 继承

    全面分析JavaScript 继承

    在JAVASCRIPT中,类的所有实例对象都是从同一个原型对象(父类)上继承属性,所以原型对象是类继承机制的核心。或者是用户自己定义的类,下面小编带大家学习一下吧
    2019-05-05
  • js中escape对应的C#解码函数 UrlDecode

    js中escape对应的C#解码函数 UrlDecode

    js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s),使用过程中有以下几点需要注意
    2012-12-12
  • 关于JS管理作用域的问题

    关于JS管理作用域的问题

    本篇文章中,小编为大家介绍关于JS管理作用域的问题,有需要的朋友可以关注一下
    2013-04-04
  • JavaScript中的内置对象介绍

    JavaScript中的内置对象介绍

    这篇文章介绍了JavaScript中的内置对象,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 详解JavaScript中shift()方法的使用

    详解JavaScript中shift()方法的使用

    这篇文章主要介绍了详解JavaScript中shift()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • Web Inspector:关于在 Sublime Text 中调试Js的介绍

    Web Inspector:关于在 Sublime Text 中调试Js的介绍

    本篇文章小编将为大家介绍,Web Inspector:关于在 Sublime Text 中调试Js的介绍。需要的朋友可以参考一下
    2013-04-04
  • JavaScript编程中布尔对象的基本使用

    JavaScript编程中布尔对象的基本使用

    这篇文章主要介绍了JavaScript编程中布尔对象的基本使用,是JavaScript入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • JavaScript开发规范要求(规范化代码)

    JavaScript开发规范要求(规范化代码)

    作为一名开发人员(WEB前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题。
    2010-08-08
  • window.location.href的用法(动态输出跳转)

    window.location.href的用法(动态输出跳转)

    无论在静态页面还是动态输出页面中window.location.href都是不错的用了跳转的实现方案
    2014-08-08

最新评论