js中let与var变量声明有何本质区别?

更新于
2026-10-02 14:13:39
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1560个文字,预计阅读时间需要7分钟。

ES6新增了let命令,用于声明局部变量,仅在let所在代码块内有效,具有临时性死区限制。例如:

javascriptfunction f1() { { let a=value; } console.log(a); // ReferenceError: a is not defined}

ES6 新增了let命令,用来声明局部变量,所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。

1.ES6可以用let定义块级作用域变量

代码如下:

function f1(){ { var a = 10; let b = 20; } console.log(a); // 10 console.log(b); // Uncaught ReferenceError: b is not defined } f1();

说明:在ES6之前只有全局作用域和函数作用域,在ES6中新增了块级作用域,用{}花括号表示。var 声明的变量a在花括号外面仍然是会起作用的,但是let声明的变量b只有在花括号里面才会起作用的,在块级作用域内。

2.let配合for循环的独特应用

代码如下:

function f2(){ var i = 5; for(var i=0;i<=10;i++){ } console.log(i); // 11 var j = 5; for(let j=0;j<=10;j++){ } console.log(j); // 5 } f2();

说明:let非常适合用于for循环内部的块级作用域,在for循环当中,每一次的执行都是一个全新的独立的块级作用域。使用let声明的变量在for循环当中不会受到循环体外面的影响,不会受到变量污染,不会发生改变。对于var声明的变量i会受到for循环的影响,受到变量污染,而let声明的变量j不会受到for循环的影响。

阅读全文
标签:区别es6

本文共计1560个文字,预计阅读时间需要7分钟。

ES6新增了let命令,用于声明局部变量,仅在let所在代码块内有效,具有临时性死区限制。例如:

javascriptfunction f1() { { let a=value; } console.log(a); // ReferenceError: a is not defined}

ES6 新增了let命令,用来声明局部变量,所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。

1.ES6可以用let定义块级作用域变量

代码如下:

function f1(){ { var a = 10; let b = 20; } console.log(a); // 10 console.log(b); // Uncaught ReferenceError: b is not defined } f1();

说明:在ES6之前只有全局作用域和函数作用域,在ES6中新增了块级作用域,用{}花括号表示。var 声明的变量a在花括号外面仍然是会起作用的,但是let声明的变量b只有在花括号里面才会起作用的,在块级作用域内。

2.let配合for循环的独特应用

代码如下:

function f2(){ var i = 5; for(var i=0;i<=10;i++){ } console.log(i); // 11 var j = 5; for(let j=0;j<=10;j++){ } console.log(j); // 5 } f2();

说明:let非常适合用于for循环内部的块级作用域,在for循环当中,每一次的执行都是一个全新的独立的块级作用域。使用let声明的变量在for循环当中不会受到循环体外面的影响,不会受到变量污染,不会发生改变。对于var声明的变量i会受到for循环的影响,受到变量污染,而let声明的变量j不会受到for循环的影响。

阅读全文
标签:区别es6