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>

 

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