JS----变量声明与作用域

一、let

1. let关键字声明变量

 定义方式: let 变量名;
// 声明并设置初始值
	let y = 10
// 重新赋值
	y = "感觉自己萌萌哒"
    console.log(y); //感觉自己萌萌哒

注意

1-不允许重复声明

// let不允许在相同作用域内,重复声明同一个变量。
        // function func(){
        //     let a = 10;
        //     var a = 1;
        // }
        // function func(){
        //     let a = 10;
        //     let a = 1;
        // }

2-有块级作用】
它的用法类似于var,但是所声明的变量,只能在let命令所在的代码块内有效。

// 在下面代码块之中,分别用let和var声明了两个变量。
        {
            let a = 10;
            var b = 1;
        }
        // 结果let声明的变量报错,var声明的变量返回了正确的值。
        // 这表面,let声明的变量只在它所在的代码块有效。
        console.log(a); //a is not defined
        console.log(b); //1

3-不会变量提升

// var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为underfined。
// 这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。
// 为了纠正这种现象,let命令改变了语法行为,它声明的变量一定要在声明后使用,否则报错.
        // var的情况
        console.log(foo);
        var foo = 2; //undefined
        //  let的情况
        console.log(bar);
        let bar = 2; //Cannot access 'bar' before initialization(无法在初始化之前访问变量)

二、const

1. const关键字声明变量(常量)

 定义方式: const 变量名;
 const声明一个只读的常量。一旦声明,常量的值就不能改变。
// 声明并设置初始值
 const y = 10;
 console.log(y);//10

注意

1-基本类型数据无法重新赋值

 const PI =3.1415;
 console.log(PI);//3.1415
 PI = 3;
 console.log(PI); //Assignment to constant variable.(赋值给常量变量。)

注意点2-必须设置初始值

// const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值
const foo;
console.log(foo); //Missing initializer.(缺少初始值)// 只声明不赋值,就会报错。

注意点3-有块级作用域

// const的作用域和let命令相同:只在声明的块级作用域内有效 
if(true){
  const MAX =5;
  console.log(MAX);
}
  console.log(MAX); // MAX is not defined

注意点4-不会变量提升

// const命令声明的常量也是不能提升,同样存在暂时性死区,只能在声明的位置后面使用。 
if(true) {
	console.log(MAX); //Cannot access 'MAX' before initialization
	const MAX =5;
}

注意点5-不能重复声明

//let age = 18;
//const age = 30;

总结:
1.基本数据类型无法重新赋值
2.必须设置初始值
3.有块级作用域
4.不会变量提升
5.不能重复赋值

三、var

1. var关键字声明变量
 定义方式: var 变量名;
//1.声明变量 
 var food
// 2.变量声明+初始值
 var noodle ='重庆小面'
// 3.重新赋值
 noodle ='兰州拉面"
 console.log(noodle);//兰州拉面
注意

注意点1:变量会提升

 console.log(num); //unfined
 var num = 10;

注意点2:没有块级作用域

for(var i = 1; i < 5 ; i++){
	console.log('循环内'+ i);//循环内1、循环内2、循环内3、循环内4
}
   console.log('循环外'+ i);//循环外5

开发时使用什么关键字声明变量?

为了提高代码的质量,在开发过程中建议只使用 const 和 let 关键字声明变量。因为 const 和 let 声明的变量有明确的作用域、声明位置、以及不变的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值