JavaScript变量与常量

MDN关于变量的文章

声明

JavaScript有三种声明。

  • var 声明一个变量,可选择将其初始化为一个值。
  • let 声明一个块作用域的局部变量(block scope local variable),可 选择将其初始化为一个值。
  • const 声明一个只读的常量。

var与let都是用来声明一个变量,不同之处在于
1.在语句块中使用var声明的变量,成为语句块所在代码段的局部变量。而使用let只能在相应代码块访问

    {       
        var temp  = 'aa'
        let temp2 ='aa'
    }
    console.log(temp) //可以访问temp变量
    console.log(temp2) //temp2 is not defined

2.使用var声明的变量在 没声明前可以引用,而不会引发异常。

//使用var声明变量bb
console.log(bb) //undefined
var bb = 'bb'

//为什么使用var没有报错?
//console.log(bb) //undefined
//var bb = 'bb'
//因为使用var声明的变量会被提升到代码块顶部
//声明bb的写法 相当于下面这样
var cc
console.log(cc)//此时cc已经被声明所以不会报错
cc = 'cc'


//使用let声明
console.log(aa) //Uncaught ReferenceError: aa is not defined
let aa = 'aa'

常量
mdn常量介绍
这篇文章是这样介绍的————const 声明创建一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次。(译者注:JavaScript中的常量和Java,C++中的常量一个意思。注意区分常量的值和常量指向的值的不同)

const aa = '这是一个常量只能赋值一次'

console.log(aa)
//接下来赋值一次

aa = '能不能赋值啊???' //Assignment to constant variable. 看来是不能再次赋值了。

但这句“这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次。”是什么意思?

var object = {
name:"this is my name"
}
const aa = object

//注意接下来的操作!!!
aa.name = '原来你是隔壁老王'
aa.age =20
console.log(aa) //Object {name: "原来你是隔壁老王", age: 20}

上面的操作没有对常量aa 进行第二次赋值,只是修改在堆内存中的对象,没有改变 常量aa的指针。所以不会报错。
所以js中的常量并不是值不能变,而是只能赋值一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值