let、var和const的区别

9 篇文章 0 订阅
3 篇文章 0 订阅

let是ES中推荐的定义方式,默认情况下javascript中并没有块级(block)作用域,let则是块级定义域
let 关键词声明的变量不具备变量提升(hoisting)特性
let 和 const 声明只在最靠近的一个块中(花括号内)有效
当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
const 在声明时必须被赋值

let和var的区别

let x=100;
var y=100;
if(true){
    let x=200;
    var y=200;
    console.log("x的值:"+x);
    console.log("y的值:"+y)
}
console.log("x的值:"+x);
console.log("y的值:"+y);
x的值:200
y的值:200
x的值:100
y的值:200

const

被const修饰的变量,值不可以改变。本质上指的是内存地址不可变,所以在修饰对象的时候,对象的引用不可变,但是对象的属性却是可以改变的。

1、以下的NAME必须在初始化时赋值,且只有一次赋值机会。

const NAME="Tom";
console.group("关于const。。。");
console.log(NAME);

关于const。。。
  Tom

2、修饰类时,类无法实例化

const People={
  name:"Jack",
  age:19
};

console.log(People.name);
//不可实例化
jack=new People();

3、以下对象都可以运行,其中cat对象实例化了两次,而被const修饰的dog对象,只可以被实例化一次,dog=new Animal()

function Animal(name,age) {
    this.name=name;
    this.age=age;
    this.hello=function() {
        console.log("大家好,我是"+name)
    }
}

var cat=new Animal("Sally",19);
cat.hello();

cat=new Animal("Tom",10);
cat.hello();

const dog=new Animal("Jack",5);
dog.hello();



大家好,我是Sally
大家好,我是Tom
大家好,我是Jack

因为对象的内存已经是固定的,但是对象的属性却没固定,所以可以更改,而且即使改变的对象的属性,但是方法的内存也是固定的,所以打印的数据还是固定的。

dog.name="Tim";
dog.hello();
console.log(dog.name);

大家好,我是Jack
Tim

稍作修改,如下

function Animal(age) {
    this.age=age;
    this.hello=function(name) {
        this.name=name;
        console.log("大家好,我是"+name)
    }
}

const dog=new Animal(19);
dog.hello("Tom");
dog.name="Tim";
dog.hello();
dog.hello("jack");

大家好,我是Tom
大家好,我是undefined
大家好,我是jack

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值