zoukankan      html  css  js  c++  java
  • js 一道面试题,有关函数执行逻辑

      跟朋友探讨了一道面试题,具体内容如下:

    var b = 10;
    (function b() {
      b = 20;
      console.log(b);
    })();

      问为什么打印出来的【变量b】 不是20?

      先来看下正确结果:

      是不是第一眼瞅过去觉得有点问题?

      这里涉及到了一个知识点:在JS的预编译期,声明式函数将会先被提取出来,然后再按顺序执行js代码。

      程序发现可直接执行的声明函数,直接执行了函数,此时 【变量b】指向的是该函数,执行到 b = 20 时,b 还在使用中,赋值失败,再 console 的时候自然就是引用的函数表达式了。

      最后,函数执行结束,释放 【变量b】,再顺序执行 js 代码,此时【变量b】赋值为 10 。

  • 相关阅读:
    Jmeter -准备篇
    SQL-DELETE
    SQL-UPDATE
    SQL- AND & OR & Order by & INSERT INTO
    SQL-WHERE
    SQL- select distinct
    SQL-select
    【图】max51开发板top页
    simple_spi_top
    UART.V
  • 原文地址:https://www.cnblogs.com/guofan/p/14864756.html
Copyright © 2011-2022 走看看