美文网首页
ES6---新版变量声明:let和cons

ES6---新版变量声明:let和cons

作者: 学的会的前端 | 来源:发表于2019-08-06 18:24 被阅读0次

let和const

  • a = 1会声明一个全局变量是错的,只有在没有a这个变量的时候,a = 1才会声明一个全局变量。所以a = 1含义不明,所以尽量不要使用a= 1
// 1.情况
a = 1 //声明一个全局变量
console.log(window.a)
//2.情况
var a
function fn(){a = 1 //a不一定是全局变量,外面有var a,所以此时只是给a赋值,也是全局变量
}
//3.情况
var a 
function fn(){
var a 
function fn2(){
  a = 1 //局部变量
}
}
  • var a不管写在哪里,都会有一个声明提升。
function fn(){
 if(true){
    console.log(a)   //代码不会报错
}else{
    var a  //a还是被声明了
//此时这个地方的代码不会执行
  console.log(2)
  }
}
  • var a = 1会不小心暴露全局变量window.a
//以下代码还是会暴露两个全局变量a,frank解决办法,用一个带有函数名的函数把所有的代码包裹起来。
//此时,a才是局部变量,frank是全局变量,但此时函数也是全局便变量。
{
  var a
  window. frank = function(){
    console.log(a)
  }
}

以上代码的解决方案是:用一个立即执行的匿名函数包裹所有的代码,就可以避免a的提升。

 !function(){
        var a = 1
        window.frank = function(){
            console.log(a)
        }
    }()
  • let 不暴露全局变量,let就是写在哪,位置就在哪,不会有变量的提升。
  • let 的作用域遇到{ }就停止。
{
  let a = 1
  window.frank = function(){
    console.log(a)  
  }
}
console.log(a) //a is not defined
  • let也是可以嵌套的。要先声明在使用。(存在Temp Dead Zone)
{
  let a = 1
  console.log(a) // 1
  {
    console.log(a) // 报错(Temp Dead Zone)这是临时死区
    let a = 2
    console.log(a) //2
    {
      let a = 3
      cosole.log(a) //3
    }
  }
}
  • const和let差不多,但是const只有一次赋值机会,后面在赋值,就会报错。const主要应用在常量上,例如PI
{
  let a = 1
  let a = 2 //报错(不可以重复声明)
  //------------------
  let a = 1
  a = 2 //允许,不会报错(允许重复赋值)
  //---------------------
  const a = 1
  a = 2//报错(只有一次声明及赋值)
  //------
const a //报错(一定要在声明的时候赋值)

}

总结:

  • let的总结
  1. let 的作用域在最近的{}之间;
  2. 如果你在let a之前使用a,那么报错(一定要先声明,在使用);
  3. 如果重复let a那么,报错;
  4. let的作用:为了方便的使用局部变量,而不需要引入立即执行函数
  • cnst的总结
  1. 1,2,3同上。
  2. 只有一次赋值机会,而且在声明的时候立马赋值。
  3. 一般常量赋值使用const,比如PI。

相关文章

  • ES6---新版变量声明:let和cons

    let和const a = 1会声明一个全局变量是错的,只有在没有a这个变量的时候,a = 1才会声明一个全局变量...

  • 工作中常用的 ES6 语法

    变量声明 let 和const 不用var, 用const声明只读变量,let声明变量。let和const都是块级...

  • 吃透ES6----let和const

    ES6 在原有两种声明变量命令(var和function)的基础上,又加入了一共四种声明变量的命令let cons...

  • 第二十六章 ES6的一些新增方法

    let 1.let var和let的区别 let声明变量和var声明变量用法相似,但通过let声明的变量只在所在的...

  • js var, let, const特性

    var, let, const 用来声明变量 一、let 用法 声明变量和var类似,但是所声明的变量,只在let...

  • 常量、变量和基本数据类型

    声明常量和变量 常量和变量在使用前声明,用 let 来声明常量,用 var 来声明变量。let只能声明一个成员变量...

  • JS(简述)

    元素介绍 1.document文档对象2.let/var 声明变量(新版建议用let) console.log()...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • Swift 2.0 学习笔记 1_基础部分

    //: 基础部分 //: 常量和变量 //: 声明常量和变量 // let: 常量 var: 变量 let max...

  • 2020-01-05 ES6

    let 和 const let命令 let 声明变量,在let命令所在的代码块内有效。var 声明变量,全局作用域...

网友评论

      本文标题:ES6---新版变量声明:let和cons

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