1.变量提升是指在子块中定义的变量,在某些特殊情况下(比如说上文提到的for循环就是一个子块),其作用域扩大到了父块的范围内(doSomething是一个父块),有些文章也会把他称作“变量泄漏”,是一个概念。

2.var定义变量的作用域是函数作用域,并非块级作用域(ES5没有块级作用域的概念),变量是很容易被提升的,一旦将其提升了,就会超出离他最近的方法外,暂时发现的变量提升的方法有:for循环、函数内外定义同名变量

var name ='dkvirus'

function test () {

console.log(name)

var name = 'hello'

}

test()//undifined

此时test()内的变量name=''hello'提升了,作用域范围变成了全局,将变量name =‘dkvirus’覆盖,所以显示undifined,如果用let的话,会报错变量name未initialization,而不是undifined

相关文章:

  • 2021-04-22
  • 2022-12-23
  • 2021-06-29
  • 2021-05-07
  • 2021-11-10
  • 2021-07-23
  • 2021-08-19
  • 2022-02-03
猜你喜欢
  • 2022-01-21
  • 2022-12-23
  • 2021-11-08
  • 2021-07-24
  • 1970-01-01
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案