本文主要是介绍JavaScript let (EcmaScript 6 let), JavaScript 局部变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JavaScript let (EcmaScript 6 let), JavaScript 局部变量。
let声明一个块级域的局部变量,并且可以同时初始化该变量。
语法
1 | let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]; |
let 允许把变量的作用域限制在块级域中。与 var 不同处是:var 申明变量要么是全局的,要么是函数级的,而无法是块级的。
例子:
用 let 在一个代码块中定义变量.
1 2 3 4 | if (x > y) { let gamma = 12.7 + y; i = gamma * x; } |
在用到内部函数的时候,let 能够让代码更简洁,比如:
1 2 3 4 5 6 7 8 9 10 | var list = document.getElementById( "list" ); for ( var i = 1; i <= 5; i++) { var item = document.createElement( "LI" ); item.appendChild(document.createTextNode( "Item " + i)); let j = i; item.onclick = function (ev) { console.log( "Item " + j + " is clicked." ); }; list.appendChild(item); } |
上面这段代码的意图是创建5个li,点击不同的li能够打印出当前li的序号。如果不用let,而改用var的话,将总是打印出 Item 5 is Clicked,因为 j 是函数级变量,5个内部函数都指向了同一个 j ,而 j 最后一次赋值是5。用了let后,j 变成块级域(也就是花括号中的块,每进入一次花括号就生成了一个块级域),所以 5 个内部函数指向了不同的 j 。
作用域规则
用 let 定义的变量的作用域是定义它们的块内,以及包含在这个块中的子块 ,这一点有点象var,只是var 定义的变量的作用域是定义它们的函数内 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function varTest() { var x = 31; if ( true ) { var x = 71; // same variable! console.log(x); // 71 } console.log(x); // 71 } function letTest() { let x = 31; if ( true ) { let x = 71; // different variable console.log(x); // 71 } console.log(x); // 31 } |
在程序或者函数的顶层,let 的表现就象 var 一样:
1 2 3 4 | var x = 'global' ; let y = 'global' ; console.log( this .x); console.log( this .y); |
上面这段代码的运行后会显示两次"global"。
这篇关于JavaScript let (EcmaScript 6 let), JavaScript 局部变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!