一、JavaScript基础[var、let、const]

一、基础

1.变量

  • var作用于函数作用域不可作用于块作用域存在变量提升不存在暂时性死区可重复定义
  • let作用于函数作用域作用于块作用域不存在变量提升存在暂时性死区不可重复定义
    • 定义时,可以不赋值;可以重复赋值
  • const作用于函数作用域作用于块作用域不存在变量提升存在暂时性死区不可重复定义
    • 定义时,必须要赋值;只能赋值一次

  • 函数作用域
	# 解释:写在函数里面的变量不论是什么类型,外部都无法访问;函数作用域指的就是函数
    <script>
        function test(){
            var a=1
            let b=2
            const c=3
        }
        test()
        console.log(a);//Uncaught ReferenceError: a is not defined
        console.log(b);//Uncaught ReferenceError: b is not defined
        console.log(c);//Uncaught ReferenceError: c is not defined
    </script>
  • 块作用域
	# 解释:只有letconst作用于块;块作用域指的就是比如ifforwhile等等这种类型
    <script>
        if(1){
            var a=1
        }
        if(1){
            let b=2
        }
        if(1){
            const c=3
        }
        console.log(a)   // 1     
        console.log(b)   // Uncaught ReferenceError: b is not defined 
        console.log(c)   // Uncaught ReferenceError: c is not defined      
    </script>
  • 变量提升
# 解释:var定义的变量在运行时,总会把定义最先运行(先运行这个定义的内容,其不包括赋值);letconst则不行,其会直接报错
console.log(a);// undefined  非报错内容,只是表示没有定义即没有赋值
var a = 66;
// 等同于
var a;
console.log(a);// undefined  非报错内容,只是表示没有定义即没有赋值
a=66;

  • 暂时性死区
# 暂时性死区,即不能变量提升,通俗来说就算先定义再使用(相反的是var可以先使用再定义)
console.log(a); //Cannot access 'a' before initialization
console.log(b); //Cannot access 'b' before initialization
let a = 66;
const b = 100;

  • 重复定义
# letconst不可重复定义,重复后会报错;var可以,且取最近一次赋值
const b=1;
const b=20;//  Identifier 'b' has already been declared

var a=10
var a=20
console.log(a)// 20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值