变量、常量

变量

{ //ES5定义变量
    var PI = 3.14
        //ES6定义变量
    let PI2 = 3.14
}
console.log(PI) //3.14
console.log(PI2) //PI2 is not defined

分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

常量

一旦声明,常量的值就不能改变。

代码:

    //ES5定义常量
    Object.defineProperty(window, "PI2", {
            value: 3.1415926,
            writable: false
        })
    //ES6定义常量
    const PI = 3.1415926
  • const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
需要注意的是:const的作用域与let命令相同:只在声明所在的块级作用域内有效。

都不存在变量提升

var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用

你可能感兴趣的:(变量、常量)