js中let与var变量声明有何本质区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计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循环的影响。
本文共计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循环的影响。

