javascript 中 let 和 var 及 const 用法

<script>
var carName = "Volvo";
 
// 這裏可以使用 carName 變量
 function myFunction() {
    // 這裏也可以使用 carName 變量
	console.log("函數裏面調取="+carName);
}
myFunction();

// 這裏不能使用 carName 變量
 
function myFunction1() {
    var carName1 = "Volvo";
    // 這裏可以使用 carName 變量
}
myFunction1();
// 這裏不能使用 carName1 變量
console.log(typeof(carName1));// undefined

//-----------------------------------------------------------------------
//JavaScript 塊級作用域(Block Scope)
{ 
    var x = 2; 
}
//alert(x);
//在 ES6 之前,是沒有塊級作用域的概念的。
//ES6 可以使用 let 關鍵字來實現塊級作用域。
//let 聲明的變量只在 let 命令所在的代碼塊 {} 內有效,在 {} 之外不能訪問。
{ 
    let y = 44;
	//alert(y);
}
//alert(y);//由於y 是使用let 定義的,所有在{} 中訪問.


var x = 10;
// 這裏輸出 x 爲 10
{ 
    var x = 2;
    // 這裏輸出 x 爲 2
}
//alert("x="+x);
// 這裏輸出 x 爲 2

//let 關鍵字就可以解決這個問題,因爲它只在 let 命令所在的代碼塊 {} 內有效。
var x = 10;
// 這裏輸出 x 爲 10
{ 
    let x = 2;
    // 這裏輸出 x 爲 2
}
//alert(x)
// 這裏輸出 x 爲 10
//--------------------------------------------------------------------------------------------
//循環作用域
var i = 5;
for (var i = 0; i < 10; i++) {
    // 一些代碼...
}
// 這裏輸出 i 爲 10

let j = 5;
for (let j = 0; j < 10; j++) {
    // 一些代碼...
}
//alert(j);
// 這裏輸出 j 爲 5

//在函數體外或代碼塊外使用 var 和 let 關鍵字聲明的變量也有點類似。
//它們的作用域都是 全局的:
let a = 1;

function af(){
	a = 3;
}
af();
alert(a); //3
//-----------------------------------------------------------------------
//重置變量
//使用 var 關鍵字聲明的變量在任何地方都可以修改:
var x = 2;
 
// x 爲 2
 
var x = 3;
 
 // 現在 x 爲 3
//1,在相同的作用域或塊級作用域中,不能使用 let 關鍵字來重置 var 關鍵字聲明的變量:
/*
var x = 2;       // 合法
let x = 3;       // 不合法
{
    var x = 4;   // 合法
    let x = 5   // 不合法
}
*/
//2,在相同的作用域或塊級作用域中,不能使用 let 關鍵字來重置 let 關鍵字聲明的變量:
/*
let x = 2;       // 合法
let x = 3;       // 不合法

{
    let x = 4;   // 合法
    let x = 5;   // 不合法
}
*/
//3 在相同的作用域或塊級作用域中,不能使用 var 關鍵字來重置 let 關鍵字聲明的變量:
/*
let x = 2;       // 合法
var x = 3;       // 不合法
{
    let x = 4;   // 合法
    var x = 5;   // 不合法
}
*/
//4 let 關鍵字在不同作用域,或不同塊級作用域中是可以重新聲明賦值的:
/*
let x = 2;       // 合法

{
    let x = 3;   // 合法
}

{
    let x = 4;   // 合法
}
*/
//--------------------------------------------------------------------------------
//const 關鍵字
//const 用於聲明一個或多個常量,聲明時必須進行初始化,且初始化後值不可再修改:
/*
const定義常量與使用let 定義的變量相似:
二者都是塊級作用域
都不能和它所在作用域內的其他變量或函數擁有相同的名稱
兩者還有以下兩點區別:
const聲明的常量必須初始化,而let聲明的變量不用
const 定義常量的值不能通過再賦值修改,也不能再次聲明。而 let 定義的變量值可以修改。
*/
</script>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章