zoukankan      html  css  js  c++  java
  • js变量提升与函数提升

    在es6之前,js语言并没有块级作用域,即{}形成的作用域,只有全局作用域和函数作用域,所谓的提升,即是将该变量的声明或者函数的声明提升,举个例子

    console.log(global); //undefined
    var global = 111;
    console.log(global);//111
    

    显然,上面代码处于一个全局的作用域中,在该作用域中使用var声明了一个global变量,其实际的声明过程如下:

    var global;
    console.log(global); //undefined
    global = 111;
    console.log(global) //111
    

    上面可见,var global的变量声明被提升到第一行了,因此第二行中的输出显示为undefined,第三行才对global变量进行赋值操作;

    因此,需要注意的:

    1、变量的声明在该作用域中,会被提升到出函数声明的最高级;

    2、需要区分变量的声明变量的赋值是两种不同行为,需要分开处理;

    函数提升:

    函数常见的创建有两种方式:

    1、函数声明;

    function func(){
      ......  
    }
    

      

    2、函数表达式

    var func = function() {}
    

    然而,只有第一种函数声明的方式才有函数提升的作用。

    举个例子:

    console.log(func());//1
    function func() {
      return 1;      
    }
    

    也就是说,就算函数在console之后被定义,依然会提升到该作用域的最顶端,而且高于变量提升。

  • 相关阅读:
    2018级软件秋季总结
    对我影响最大的三位老师
    自我介绍
    Js中的一个日期处理格式化函数
    SQL update语句加减乘除运算
    用css让一个容器水平垂直
    position:absolute 的深入探讨
    java正则表达式
    Session
    使用Cookie进行会话管理
  • 原文地址:https://www.cnblogs.com/Yoriluo/p/7458015.html
Copyright © 2011-2022 走看看