zoukankan      html  css  js  c++  java
  • javascript --- 声明提前(学习笔记)

    声明提升

    1. 未声明变量
      console.log(a);
      在没有定义 a 的情况下,直接使用,会报错。
    2. 声明变量
      console.log(a);
      var a = 2;
      输出结果:undefined 并不会输出2。
      原因:把这个过程拆分成两个操作。JS在编译的时候,先将var a 声明提升,分配空间。在执行的过程中才会对变量a进行赋值操作。
    3. 声明函数
      console.log(foo);
      function foo(){}
      不会报错,与var一样,这个声明也会提前。

    当var 与 function 爱上了同一个姑娘。

    console.log(fo);
    var fo = 3;
    function fo(){}
    输出结果:function fo(){}
    原因: 谁让咱体积大,还能独立包揽作用域呢。咱就是优先级高。

    当var 与 function 遇到了逻辑处理。

    1. var遇到了逻辑处理
      console.log(a)
      if(true){
      var a =2
      }else{
      var a =3
      }
      输出:undefined
      此处变量被提升了所以不报错。
    2. function 遇到了逻辑处理
      foo();
      if(true){
      function foo(console.log(2))
      }else{
      function foo(console.log(3))
      }
      报错。

    怀疑是function绑定了"{}"的块作用域。具体是什么原因还需要向大神请教了。

  • 相关阅读:
    IOS开发环境
    IOS开发环境搭建
    Eclipse简明使用教程(java集成开发环境)
    分布式相关
    成为架构师之路认识分布式架构
    什么是分布式系统,如何学习分布式系统
    分布式定义
    VIM命令详解
    vim常用命令
    vi/vim 命令使用详解
  • 原文地址:https://www.cnblogs.com/blank-string/p/6522187.html
Copyright © 2011-2022 走看看