var let const 三者区别!

1. 是否存在变量提升?

1.使用 var 声明的变量存在变量提升
2.使用 let const 声明的变量不存在变量的提升
变量提升:变量在声明之前可以进行使用,并且代码不会报错 代码会提前进行一个预解析
预解析:在浏览器拿到js代码将要执行之前,会整体的解读一遍js文件,把其中的var声明的变量还有function提前定义


	console.log(a); //undefined 在没有定义之前使用a代码不报错 值为undefined
	var a = 10;	//使用var声明的变量存在变量提升

2. 是否存在暂时性死区?

  1. 使用 var 声明的变量不存在暂时性死区
    2.使用 let const 声明的变量存在暂时性死区
    暂时性死区:在用 let 声明一个变量之前,都不能使用这个变量,否者就会报错,在这之前的代码对于这个变量来说就是暂时性死区
 	console.log(a)
    let a = 10;

报错

3. 是否允许重复声明变量?

1.使用 var 声明的变量可以重复声明
2.使用 let const 声明的变量不可以重复声明

	var a = 10;
    var a = 20;		// 不会出现报错

	let b = 10;
    let b = 20;		// Uncaught SyntaxError: Identifier 'b' has already been declared

4. 是否存在块级作用域?

1.使用 var 声明的变量不存在块级作用域
2.使用 let const 声明的变量存在块级作用域
作用域:全局作用域 局部作用域 (函数作用域) 块级作用域

	var a = 10;
    for (var a = 0; a <= 10; a++) {

    }
    console.log(a)   // 11
    
 	let a = 10;
    for (let a = 0; a <= 10; a++) {

    }
    console.log(a)   // 10

5. 是否能修改声明的变量?

1.使用 var let 声明的变量可以重复修改
2.使用 const 声明的变量不可以重复修改
3.使用 const 声明的变量是一个引用数据类型,只要不去修改内存地址,那么这个数据里的内容是可以重复修改的、

    var a = 10;
    a = 20
    
    let a = 10;
    a = 20
    
    const a = 10;
    a = 20	// Uncaught SyntaxError: Identifier 'a' has already been declared
    //const声明的变量 如果赋值为一个引用数据类型的值,那么是可以修改值里面的内容的,只要不去修改这个变量所指向的内存空间地址即可
    const 应用?
    const PI = 3.1415926;
    const API = "http://www.baidu.com";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值