美文网首页让前端飞Web前端学习圈
前端进阶之 let、const、var

前端进阶之 let、const、var

作者: Web前端学习营 | 来源:发表于2019-06-06 20:22 被阅读0次

首先我们来看一段代码

console.log(变量)// undefinedvar变量 =1复制代码

从上面的代码来看,虽然变量还没有被声明,但是我们却可以使用,这种情况就叫做提升,并且是声明提升。

再来一段代码

console.log(变量)// ƒ 变量() {}function变量(){}var变量 =1复制代码

上面的代码叫做函数提升,函数提升跟变量提升差不多,就是函数提升优先级比变量高。

从上可知,使用 var 声明的变量会被提升到作用域的顶部。

区别

首先我们再来看一段代码

vara =1letb =1constc =1console.log(window.b)// undefinedconsole.log(window.c)// undefinedfunctiontest(){console.log(a)leta}test()复制代码

首先在全局作用域下使用 let 和 const 声明变量,变量并不会被挂载到 window 上,这一点就和 var 声明有了区别。

再者当我们在声明 a 之前如果使用了 a ,就会出现报错的情况。

首先报错的原因是因为存在暂时性死区,我们不能在声明前就使用变量,这也是 let 和 const优于 var 的一点。然后这里你认为的提升和 var 的提升是有区别的,虽然变量在编译的环节中被告知在这块作用域中可以访问,但是访问是受限制的。

let、const、var 创建的不同

let 和 const 声明定义了作用于 正在运行的执行上下文(running execution context) 的 词法环境(LexicalEnvironment) 的变量。

let 和 const 声明的变量是在词法环境实例化时创建的,但是给变量赋值的原生功能 LexicalBinding 以及变量初始化的功能 Initializer 是在之后执行的,而不是在创建变量时,所以在执行之前无法以任何方式访问它们,这就是 暂时性死区 。

var语句声明了作用于 正在运行的执行上下文(running execution context) 的 变量环境(VariableEnvironment) 的变量。

var 声明的变量同样是在词法环境实例化时创建的,并且创建时就赋值有 undefined ,在任何的 变量环境(VariableEnvironment) 中, var 变量 的绑定可以出现多个,但是最终值是由 赋值时确定的,而不是创建变量时。

总结: let const 跟 var 不同的原因是 let const 的创建是基于词法环境,而 var 是基于变量环境。。用通俗的话来说就是,不是同一个系统的...

相关文章

  • 前端进阶之 let、const、var

    首先我们来看一段代码 console.log(变量)// undefinedvar变量 =1复制代码 从上面的代码...

  • Android菜鸟学习js笔记 一

    一、var,const,let区别? var 变量,const 常量,let块级变量。

  • ES6_var、let与const

    var,let 与 const var 申明变量。 let 申明变量,更完美的 var。 const 申明常量(物...

  • TypeScript 02 - 变量声明

    在 TypeScript 中,var 还是 var,let 还是 let,const 还是 const,这里简单温...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • 面试题 var let const的区别 箭头函数和普通函数的区

    var let const 有什么区别 var var声明的变量可进行变量提升,let和const不会var可以重...

  • ES6学习

    1、 var let const var是函数作用域let和const是块级作用域,!const是常量,不能改变。...

  • ES6

    let var const var 可声明前置 let不可声明前置 let不可重复声明 存在块级作用域 const...

  • let和const

    let/const(常用) let和var 区别 let,const用于声明变量,用来替代老语法的var关键字,与...

网友评论

    本文标题:前端进阶之 let、const、var

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