美文网首页
变量提升和函数提升

变量提升和函数提升

作者: 明天的天明_3b79 | 来源:发表于2020-09-11 16:59 被阅读0次

1.变量提升

console.log(a);//undefined 

var a=123;

因为变量a的声明被提到了作用域顶端。代码编译后应该是下面这个样子(只是声明的a提升上去了,赋值并没有提升到顶端)

在代码中 使用 var 来声明变量的时候,会提到当前作用域的顶端,而赋值操作在原处不变

var a;

console.log(a)

a=123//所以输出内容为 undefined

经典面试题

解析:

1.第一个打印出undefined是因为变量提升,当前的v1只是声明了并没有赋值

2.第二个打印undefined是因为var的变量声明只是提升到当前作用域的顶端,foo函数体的v1跟第一个打印一样,只是提升没有赋值

3.第三个打印是因为var重复声明并且内层变量会覆盖外层变量,当前的v1已经被修改

4.第四个打印是因为函数内部的变量外部是访问不到的,当前的v1是100

2.函数提升

具名函数的声明有两种方式:1. 函数声明式 2. 变量形式声明

//函数声明式 function bar () { }

//变量形式声明; var foo = function () {}

注意:

bar()

var bar=function(){console.log(2);}// 报错:TypeError: bar is not a function

变量形式声明 的函数 和普通变量一样 提升的 只是一个没有值的变量,所以执行bar的时候函数体还在底下没有赋值

bar()

functionbar(){console.log(1);}//输出结果1

函数声明式会提升到作用域最前边,并且将声明内容一起提升到最上边。,所以执行bar的时候它已经是一个函数体了

函数声明的优先级高于变量声明的优先级,并且函数声明和函数定义的部分一起被提升,所以会先打印一个1然后才打印2

相关文章

  • JS中的提升

    JS中包含两种提升,变量提升和函数提升。 变量提升 变量提升只能是var或者function声明的变量或者函数,l...

  • 引用类型

    变量提升和函数声明提升   函数声明提升就是把函数声明提升到函数声明所在作用域中(或者说一个函数体内)的顶端,变量...

  • 2021-04-02

    变量提升和函数提升以及他们的优先级 1,变量提升:变量提升是指将变量声明提升到它所在的作用域的最开始部分 2,函数...

  • 关于变量提升

    函数提升的优先级要高于变量提升,变量提升到函数声明的后面; 变量提升,但是赋值不提升,函数表达式不提升;

  • let const var

    变量提升 函数会优先于变量提升; 函数提升会把整个函数移到作用域顶部 变量提升智慧把变量的定义移到作用域顶部 wi...

  • 变量提升

    变量提升 Hoisting 变量和函数的声明会在编译时被提升到作用域的顶部 提升的是声明,函数会连带函数体提升 i...

  • 变量提升和函数提升

    摘自《你不知道的JavaScript上卷》KYLE SIMPSON著 变量提升 引擎会在解释 JavaScript...

  • 变量提升和函数提升

    1.变量提升 console.log(a);//undefined var a=123; 因为变量a的声明被提到了...

  • 变量提升和函数提升

    在javascript里存在一种叫变量声明提升的东西。这里来详细的说一说,到底什么样的声明会提升,提升了什么东西。...

  • 变量提升和函数提升

    JS不像C语言,C语言是先声明后使用,否则会报错。但JS中,有变量提升现象,可以先使用后声明。 JS存在变量提升,...

网友评论

      本文标题:变量提升和函数提升

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