const、let、var的主要区别

接触ES6之后,以前定义变量的方式由var增加了let、const,平时看别人用也不知道如何区别具体差别,好好科普了一下记录下来,方便大家一起学习。

var(大家最熟悉的定义方式)

1、可定义全局作用域

2、定义内容可以修改

3、定义的变量不初始化会输出undefined

1 var a = 1
2 function test() {
3   a = 3
4 }
5 test()
6 console.log(a) //a的值为3
7 var b
8 console.log(b) //如果b不赋值则输出undefined

let(新增的块级作用域)

1、函数内定义,函数外无法使用

2、和var一样,定义的变量不初始化会输出undefined

function test () {
    for (let i=1;i<3;i++) { // 可以把每一个{}包着的区域理解为当前作用域,let只在其内部生效
        console.log(i)    // 输出1、2
    }
    console.log(i)    // Uncaught ReferenceError: i is not defined
}
test()
let z
console.log(z) //undefined

const(主要用于申明常量,常量无法修改)

1、主要用于申明常量,无法被修改

2、const定义的常量必须初始化

3、但是const如果定义为一个对象,这个对象是可以修改的

function test () {
    const a = 6
    a = 8
    console.log("a:" + a)     // 报错 Assignment to constant variable.
}
test()
// 用const定义一个对象
const k = {
    a: 3
}
k.b = 6
console.log(k)    // {a: 3, b: 6}
const c
console.log(c) // 报错

如有错误,请您指正!

posted @ 2018-09-14 11:50  橙色流年  阅读(142)  评论(0编辑  收藏  举报