let是ES6新增的命令。 做用:聲明變量。 相似於:var。 與var的區別:使用let聲明的變量,只在其所在的代碼塊內有效。javascript
聲明變量:能夠用var,也能夠不用var。 是否容許變量提高:容許。 是否容許重複聲明同一個變量:容許。 變量的做用域:全局做用域、函數做用域。 在全局做用域中,不管是否使用var,定義的變量都是全局變量。 在函數做用域中,使用var定義函數局部變量,不使用var定義全局變量。 全局變量全局可用,函數局部變量在函數內可用。 代碼塊:用{}栝起來的代碼片斷。java
let聲明的變量,只在其所在其所在的代碼塊內有效。 let不存在變量提高。 let不容許重複聲明。 let不容許在函數的一級做用域內從新聲明參數。 let存在的塊級做用域,它聲明的這個變量或「綁定」這個區域,造成「暫時性死區」,使其再也不受外部影響。 就是說,一個變量,不管其在外部是否聲明,只要在某個塊級做用域內使用let從新聲明瞭,那麼在這個塊級做用域內該變量在聲明前是不能夠使用的。bash
for循環的計數器 let聲明的循環變量i只在本輪循環有效,每一次循環的i都是一個新變量。特別的JavaScript引擎內部會記住上一輪循環的值,初始化本輪的變量i時,是在上一輪循環的基礎上進行計算。 另外,for循環設置循環變量的那部分是一個父做用域,而循環體內部是一個單獨的自做用域。函數
<script type="text/javascript">
var a = 1;
console.log(a); // 1
b = 2;
console.log(b); // 2
console.log(c); //undefined
var c = 3;
var a = 4;
function showA(){
console.log(a);
d = 5;
console.log(d);
}
showA(); // 4,5
console.log(d); //5
function showB(){
console.log(b);
var e = 6;
console.log(e);
}
showB(); //2,6
console.log(e); //報錯
</script>
複製代碼
<script type="text/javascript">
{
var a = 1;
let b = 2;
}
console.log(a); //1
console.log(b); //報錯
</script>
複製代碼
<script type="text/javascript">
var a = [];
for(var i = 0; i < 10; i++){
a[i] = function(){
console.log(i);
}
}
a[6](); //10
</script>
複製代碼
<script type="text/javascript">
for(let i = 0; i < 10; i++){
}
console.log(i); //報錯
</script>
複製代碼
<script type="text/javascript">
var a = [];
for(let i = 0; i < 10; i++){
a[i] = function(){
console.log(i);
}
}
a[6](); // 6
</script>
複製代碼
<script type="text/javascript">
for(let i = 0; i < 3; i++){
let i = 'abc';
console.log(i); //abc,abc,abc
}
</script>
複製代碼
<script type="text/javascript">
console.log(a); //報錯
let a = 1;
</script>
複製代碼
<script type="text/javascript">
let a = 1;
console.log(a); //1
{
a = 2;
let a;
console.log(a); // 報錯
}
</script>
複製代碼
<script type="text/javascript">
let a = 1;
console.log(a); // 1
let a = 2;
console.log(a); //報錯
</script>
複製代碼
<script type="text/javascript">
function showName(name){
let name = 'sunny';
console.log(name);
}
showName('lily'); // 報錯
</script>
複製代碼
<script type="text/javascript">
function showName(name){
console.log(name);
{
let name = 'sunny';
console.log(name);
}
}
showName('lily'); //lily,sunny
</script>
複製代碼