美文网首页
JavaScript十日谈,变量声明与作用域

JavaScript十日谈,变量声明与作用域

作者: 低着头走路 | 来源:发表于2022-02-25 08:24 被阅读0次

第一日,var的问题

你好,max

你一直在用var声明变量吗?

对啊,为什么问这个问题,我甚至觉得这不应该是个问题。不用var用什么?

好吧,看来你还没有接触过es6。那我换一种问法,你在使用var的过程中有遇到过什么问题吗?

这倒是有,好像还不止一个。

第一个问题

我在for循环中定义的变量i,循环结束后,在循环体外面居然可以访问到这个变量i,并且有值。

还有,我在一个if语句内声明了一个变量k,哪怕这个if语句永远不会执行,我依然可以在if语句外访问到这个变量k。

再就是,我定义了一个变量,又定义了一个函数,我把函数放在了变量的上面,却不影响这个函数对变量的访问。

我一直疑惑,这是为什么,你知道是怎么回事吧。

这个现象叫变量提升。

是说用var定义的变量,会在当前作用域内发生位置变换,将其挪到最顶部,相当于你是在第一行定义了一个变量。

我们回头看一下你刚说的那几种情况,是不是得到了合理的解释。

对于for循环相当于

var i;for(i=0;i<10;i++)console.log(i)

对于if内定义相当于

var k;if(false)console.log(k)

对于函数前置相当于

var f;function()console.log(f)

原来如此!

那这个变量提升现象能避免吗?我还是希望程序完全按照自己的预期来执行。

当然可以,那就是es6新引入的变量声明方式let,这个改天再谈,今天我们就只关心var

相关文章

  • js作用域、作用域链、闭包

    作用域 1.javascript局部作用域 变量在函数内部声明,变量为局部作用域. 2.javascript全局变...

  • JavaScript函数作用域和声明提前

    函数作用域 JavaScript 中没有块级作用域,JavaScript 取而代之地使用了函数作用域。变量在声明它...

  • JavaScript 作用域和作用域链

    JavaScript 作用域 作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • 阿里前端 面试问题

    JavaScript相关须是达到精通 JavaScript作用域链 JavaScript变量声明提升 JavaSc...

  • javascript的三种作用域

    javascript 三种作用域 全局作用域 函数作用域 块级作用域(es6) 全局作用域 变量声明不写在函数内部...

  • 块作用域和let、const

    在ES6之前,JavaScript没有块级作用域,只有全局作用域和函数作用域。 变量提升即将变量声明提升到它所在作...

  • JavaScript十日谈,变量声明与作用域

    第一日,var的问题 你好,max 你一直在用var声明变量吗? 对啊,为什么问这个问题,我甚至觉得这不应该是个问...

  • JS知识点

    1.解释 JavaScript 中的作用域与变量声明提升? 我对作用域的理解是只会对某个范围产生作用,而不会对外产...

  • 学习笔记:函数

    变量作用域 一个特性。javascript在编译时,会把变量的声明都提到前面来。 全局作用域。不在函数内定义的变量...

网友评论

      本文标题:JavaScript十日谈,变量声明与作用域

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