var、let、const的区别

JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中新增了块级作用域。

1、全局变量:

指没有定义在任何函数内,直接定义在全局作用域中的变量。

特点:随处可用,可重用。

何时:希望随处可用,且可反复使用的变量,都要声明在函数之外的全局。

2、局部变量:

指定义在函数内的参数和变量,都是局部变量。

特点:仅函数内可用,出了函数不可用,不可重用。

何时:希望变量只在函数内有效时,都要在函数内创建变量。

3、块作用域

块作用域由{ }包括,函数、if语句、for语句里面的{ }也是块作用域。

ES6允许块级作用域的任意嵌套,

{{{{{
	let b=6;
	console.log(b);// 6
}}}}}
console.log(b);//报错

外层作用域无法读取内层作用域的变量。

{
	let a=5;
}
console.log(a);//报错

var:定义的变量是全局变量或者局部变量,是存储信息的容器,可以跨函数访问,不可以跨块访问。

let:定义的变量是块级的变量,不可以跨块访问。

const:定义的变量不可以修改,而且必须初始化。
 

我们先来看看块作用域

{
        var a = 1;
        let b = 1;
        const c = 1;
        const c = 4; // 报错
        const f; // 报错
        var d;
        let e;
        
        console.log(a); // 1
        console.log(b); // 1
        console.log(c); // 1
        console.log(d); // undefined
        console.log(e); // undefined
    }
    console.log(a); // 1
    console.log(b); // 报错
    console.log(c); // 报错

再来看看函数作用域

(function A() {
        var d = 3;
        let e = 3;
        const f = 3;
        console.log(d); // 3  在同一个{ }中,可以被访问到,此时d为局部变量
        console.log(e); // 3  在同一个{ }中,可以被访问到,此时e为块级变量
        console.log(f); // 3  在同一个{ }中,可以被访问到,此时f为块级变量

    })();
    console.log(d); // 报错 
    console.log(e); // 报错 
    console.log(f); // 报错 

  如有错误,请您指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值