var let const随笔记(1)

1. 基本概念

var 声明了一个变量,并且可以同时初始化该变量

let 声明一个块级作用域的本地变量,并且可选的赋予初始值

const 声明创建一个只读的常量,作用域与let相同,这并不意味着常量指向的值不可变,而是变量标识符的值只能赋予一次

注意:在语法中的块级作用域是指if/else/for/while语句里2个大括号之间的部分

2. 基本用法

(1)let 所声明的变量,只在let命令所在的代码块中有效

1 {
2     let a = 1;
3     var b= 2;  
4 }
5 
6 a //ReferenceError: a is not defined
7 b // 2

上面的代码块中,分别用了let 和var 定义了两个变量,然后在代码块之外分别调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值,这说明:

let声明的变量只在它所在的代码块中有效。

for循环中很适合用let;同时,还有一个很特别之处,如下面的第二段代码:循环语句部分是一个父作用域,而循环体内是一个单独的子作用域,因此输出了三次‘abc’,这表明:作用域内部的变量i和外部的变量i是分离的

for(let i=0;i<3;i++){}
console.log(i);//RenferenceError:i is not defined
for(let i=0;i<3;i++){
    let i="abc";
    console.log(i);
}
// abc
// abc
// abc

(2)const声明一个只读的常量,一旦声明,常量的值就不可以改变,如下代码,当执行到第三行就会报错

1 const PI = 3.1415926;
2 console.log(PI);   //3.1415926
3 PI = 3; //TypeError: Assignment to constant variable.

同时,const声明的变量不得改变值,所以一旦声明变量就必须立即初始化,不能留到以后赋值

const str;
// SyntaxError: Missing initializer in const declaration 这表示,对于const来说,只声明不赋值,就会报错。

 但是以下代码是不会报错的,const定义常量值,不能够重新赋值,如果值是一个对象,可以改变对象里边的属性值

{
    const a = {value:1}
    a.value = 2
    console.log(a) // {value:2}

    const b = [1,2,3]
    b.push(4)
    console.log(b) // [1,2,3,4]
}

 

原文地址:https://www.cnblogs.com/max-tlp/p/7411789.html