let var const 的区别

11 篇文章 0 订阅

js严格模式
‘use strict’
1.是否存在变量提升?
2.是否存在暂时性死区?
3.是否允许重复声明变量?
4.是否存在块级作用域?
5.是否能修改声明的变量?

1是否存在变量提升

变量提升:变量在声明之前可以使用,并且代码不报错 (预解释 预解析
1.用var声明的变量 存在变量提升
2.用let和const声明的变量 不存在变量提升
console.log(a);//undefined
var a = 10;
var fn = function (){};
fn();
function fn(){
}
console.log(a);
Cannot access ‘a’ before initialization
a初始化 之前不可以使用
let a = 10;
const a = 10;

2是否存在暂时性死区

是否存在暂时性死区
在用let声明一个变量之前 都不能使用这个变量,否则就会报错, 在这之前的代码块,对于这个变量来说都叫暂时性死区
1.用var声明的变量 不存在暂时性死区
2.用let和const声明的变量 存在暂时性死区

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

1.用var声明的变量 允许重复声明
2.用let和const声明的变量 不允许重复声明
var a = 123;
var a = 456;
let b = [];
let b = {}; //Identifier ‘b’ has already been declared
b在声明之前已经被使用过了,不允许重复声明
console.log(a);{}
console.log(b);{}

4是否存在块级作用域?

作用域 全局作用域 局部作用域(函数作用域) 块级作用域
1.用var声明的变量 不存在块级作用域
2.用let和const声明的变量 存在块级作用域
var global = [];
function fn(){
var global = {};
}
console.log(global) //[]

 {} //在ES6中一个{}就可以表示为一个块级作用域
ES5中
 var global = 1;
 if(global === 1){
    var global = 2;
 }
 console.log(global)
let global = 1;
if(global === 1){
    /console.log("global块级作用域",global)
    let global = 2;
}
console.log("global全局作用域",global)
{
    let temp = 1;
    {
        let temp = 1;
        {
            let temp = 1;
        }
    }
}

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

1.用var和let声明的变量 可以重复修改
2.用const声明的变量 不可以修改
var aa = “1234”;
aa = “123456”;
let aa = “1234”;
aa = “123456”;
const aa = “1234”;
aa = “123456”; //Assignment to constant variable.
使用const声明一个引用数据类型,只要不去修改内存地址,那么这个数据里面的内容是可以重复修改的
const obj = {
a: 10
};
obj.a = 100
obj = { a:100 }
const 使用场景
const Pi = 3.1415926;
const API = “http://www.baidu.com”;
const BaseUrl = “http://www.baidu.com”;
let aa;
const aa; //Missing initializer in const declaration
使用const声明变量,必须赋值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值