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之后被定义,依然会提升到该作用域的最顶端,而且高于变量提升。

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/Yoriluo/p/7458015.html
Copyright © 2011-2022 走看看