ES6----let ,var

  • let所声明的变量只在代码块内有效,在for循环中使用let,每次都会新声明一个新的变量i
var a=[]
for (let i=0;i<10;i++){
  a[i]=function(){
      console.log(i);
  }
}
此时:a[5]();//5
  • 使用var声明变量,则是全局变量,所以全局中只有一个i变量,每次循环会更改i的值

var a=[]
for(var i=0;i<10;i++){
a[i]=function(){
console.log(i);
}
}
此时:a5;//10

* for循环语句是一个父作用域,for循环体内是一个单独的子作用域

for(let i=0;i<3;i++){
console.log(i)
}
//0 1 2
for(let i=0;i<3;i++){
i='abc'
console.log(i)
}
//abc abc abc

* var存在"变量提升",let不存在
  即使用var时,变量可以在声明之前使用,使用let则不可以

//使用var
console.log(a); //输出 undefined
var a=2;

//使用let
console.log(b); //报错
let b=2;

* 区块中使用let或const命令时,在声明之前使用变量就会报错

var a=1;
if(true){
a=2; //报错
let a=3;
}

* let 在作用域内不允许重复声明变量

function(){
var a=1;
let a=1;// 报错
}
function(){
let b=1;
let b=2;//报错
}


* 在块级作用域中声明函数应该写成函数表达式,而不是函数声明语句(ES6中允许在块级作用域中声明函数)

//函数声明语句
{
let a='hello';
function f(){
return a;
}
}
//函数表达式
{
let a='hello'
let f= function (){
return a;
}
}

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

推荐阅读更多精彩内容

  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,538评论 0 2
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 3,754评论 0 0
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,388评论 2 17
  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 4,544评论 0 0
  • JavaScript之父:Brendan Eich 。 -基本语法:借鉴了C语言和Java语言。-数据结构:借鉴了...
    饥人谷_kule阅读 3,759评论 0 0

友情链接更多精彩内容