JavaScript中var、let和const的区别

目录

        1.var

                语法:var varname1 [= value1] [, varname2 [= value2] ... [, varnameN [= valueN]]];

        2.let

                语法:let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];                  

        3.const

                语法:const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];


 

        1.var

                语法:var varname1 [= value1] [, varname2 [= value2] ... [, varnameN [= valueN]]];

        varnameN

                                变量名。变量名可以定义为任何合法标识符。

        valueN 可选

                                变量的初始化值。该值可以是任何合法的表达式。默认值为 undefined

                                var 语句 用于声明一个函数范围或全局范围的变量,并可将其初始化为一个值(可选)。

                                下面的代码块中,a输出的是 2,b输出的是 ‘111’。也就是说 var 创建变量时,会将重复命名的变量给覆盖了,同时可以随意的给之前声明好的变量赋值。

var a = 1
var a = 2
console.log(a)


var b = 3
b = '111'
console.log(b)


        2.let

                语法:let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];                  

        var1var2, …, varN

                                变量名。必须是合法的标识符。

        value1value2, …, valueN 

                                变量的初始值。可以是任意合法的表达式。

                                let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。

                                下面的代码块中,变量a在第二次声明的时候就报错,打印的时候也是报错的,let声明的变量不可以被重复声明,但是可以重新赋值,也就是下面的输出的b为“33”。                           

let a = 1
let a = 2
console.log(a)


let b = "2"
b = "33"
console.log(b)

        3.const

                语法:const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];

        nameN

                                常量名称,可以是任意合法的标识符

        valueN

                                常量值,可以是任意合法的表达式

                                常量是块级范围的,非常类似用 let 语句定义的变量。但常量的值是无法(通过重新赋值)改变的,也不能被重新声明。

                                下面的代码块中,a的情况和let声明时一样,不能重复声明。b的话也报错,不能重新被赋值。

const a = 1
const a = 2
console.log(a)

const b = '11'
b = '22'
console.log(b)

                        从上面的代码中我们可以看到一些区别。let 和 const 是es6推出的新的变量声明方式,将变量的类型值都有了新的确定。var在最外层声明变量时,作用域是全局的,同时变量也会提升,也就是说我可以在声明变量钱去使用它,系统会对其进行初始化,所以得到的值是undefined。但是var有一个缺点,同一变量可以被多次声明,这会照成程序中某些数据混乱。

                        这就有了let,现在let也成为了声明变量的首选,一个变量名只能声明一次但是同时又可以多次赋值。这样既保留了某个变量的唯一,又可做到对变量值的重新修改。同时,如果我们let是在{}里面声明的变量,那么这个变量就是块级变量,只能在{}里面使用。let同样可以提升变量,但是系统不会对其进行初始化,所以我们得到的值为Reference Error。

                        最后是const,和let有一点像,他在{}声明的变量只能在{}里面使用。const声明的变量不能被修改且不能重新声明,这就意味着const声明的值会保持不变。虽然我们不能更新const对象,但是可以更新const对象的属性。这样我们更改了greeting.message的值,而没有报错。

const greeting = {
    message: 'say Hi',
    times: 4,
};


//同样不能像下面这样做:


const greeting = {
    words: 'Hello',
    number: 'five',
}; // error:  Assignment to constant variable.


//但我们可以这样做:


greeting.message = 'say Hello instead';

        

                        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值