美文网首页
JS变量声明和函数声明的优先级

JS变量声明和函数声明的优先级

作者: 如果俞天阳会飞 | 来源:发表于2019-04-12 09:40 被阅读0次
 console.log(a) // 函数
  var a = 1;
  console.log(a) //变量 1
  function a() {
  }
  console.log(a) //变量 1

函数提升优先与变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖 .比如对上面代码进行改进

 console.log(a) // 函数
  var a ;
  console.log(a) // 函数
  function a() {
  }
  console.log(a) // 函数

下面的一个例子

function b(){
     a = 10;
     return;
     function a(){    //函数声明置顶
       console.log(a);
     }
   }
   var a;
   a  = 1;
   b();
   console.log(a); // 输入1

我想大家都明白,在执行函数b的时候,由于其内部有一句a=10,前面并没有var,所以在执行完函数b之后,认为变量a提升为全局变量,并且10这个值覆盖了之前的1。所以打印出的值为10。但其实并不是这样,输出的反而是1,应为在函数b中有个a函数

当不给变量a赋值的时候,反而输出的都是函数而不是undefined

 function b(){
     a = 10;
     return;
   }
   b();
   console.log(a); // 10

在执行函数b的时候,发现有一个隐式声明a=10,它在函数b里的作用域中查找不到有关于名为a的地址,于是向外查找,发现全局作用域下也没有,那么变量提升,系统默认给变量a提供一个内存,并将值赋值给变量a,所以变量a变量提升为全局变量了。所以打印出的值为10

相关文章

  • js变量提升

    解析:js解析会将声明和赋值分为2部分:声明部分(函数声明优先级高于变量,所以先执行函数声明;已经被声明过的函数名...

  • JS变量声明和函数声明的优先级

    函数提升优先与变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖 .比如对上面代码进行改进 下面的一个例子 ...

  • 变量var声明和函数function声明优先级

    变量声明优先级 使用var关键字和function关键字声明的变量,会被JS的解释器优先解析执行,具有优先级 使用...

  • JS笔记 命名问题

    JS中函数和变量重名时,后声明的覆盖先声明的,后赋值的覆盖先赋值的。 变量提升和函数提升时,变量的声明是在函数的声...

  • JS 函数声明和函数表达式的区别

    函数声明和函数表达式的区别优先级JavaScript的变量声明提升机制-即可以先使用,后声明函数声明会被提升到作用...

  • js中变量和函数声明的提升

    二 、 js中变量和函数声明的提升

  • js面试题

    1、js 数据类型 基本数据类型 引用数据类型 2、js 变量和函数声明的提升 在js中变量和函数的声明会提升到最...

  • JS变量声明提升和函数声明提升

    JS代码分为两个阶段:编译阶段和执行阶段; 编译阶段:会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作...

  • 浅谈JS变量声明和函数声明提升

    很多时候,在直觉上,我们都会认为JS代码在执行时都是自上而下一行一行执行的,但是实际上,有一种情况会导致这个假设是...

  • var 函数声明和函数表达式

    1 js变量声明的作用域是以函数为单位的函数内部:var 局部没var 全局2 函数声明和函数表达式 函数声明:...

网友评论

      本文标题:JS变量声明和函数声明的优先级

      本文链接:https://www.haomeiwen.com/subject/jjjqwqtx.html