ECMAScript 中的 let 和var

一:var声明的变量

全局作用域、局部作用域

var a = 1;     //a为全局变量,可以在任何地方使用

for(var i = 0; i < 3; i++){   //i 为全局变量                                                       

   function ff(){

       var b = "b" //b为局部遍历,只能在ff中使用

   }

}

console.log(a,b,i)    //结果为:1、报错(not defined)、4

二:let声明的变量

一:let声明的变量只在let命令所在的代码块内有效。如下面for循环中 i 就只在for循环中有效

二:不存在变量提升

三:不存在变量提升(使用的变量必须先声明)

四:let不允许在相同作用域内,重复声明同一个变量。(下面的for是个例外)

       for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

let  a = 1;    //a为全局变量,可以在任何地方使用

for(let i = 0; i < 3; i++){   //i 为全局变量

   function ff(){

      let b = "b" //b为局部遍历,只能在ff中使用

}

}

console.log(a,b,i)    //结果为:1、报错(not defined)、报错

for(var i = 0; i < 3; i++){

      i = "a"      // 即  var  i = "a"   i  作为全局变量,被赋值 a 所以循环只走了一次  就结束了

      console.log(i)   //打印一次 “a”

}


for(let  i = 0; i < 3; i++){

i = "a"      //    i  作为for代码块的局部变量,被赋值 a, 所以循环只走了一次  就结束了

console.log(i)   //打印一次 “a”

// 若改为下面的

let  a = "a"

console.log(a)   //打印 3 次 “a”

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 3,751评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,535评论 0 2
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17
  • 本文属个人笔记,不做详解,仅供参考! let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于...
    R_yan阅读 29,213评论 6 18
  • 女儿像爸爸会很有福气,是真的吗? 最近对“原生家庭”这个词特别感兴趣,我就常常会联系自己的家庭,联系自己的成长环境...
    Amilyren阅读 19,680评论 0 0