ES6学习之路1----变量的声明

2021-01-30 13:25:28 浏览数 (1)

1、var

它是variable的简写,可以理解成变量的意思。在ES6之前,JS声明变量都是采用的var。

实例1:

代码语言:javascript复制
var str = "Hello World!";
console.log(str);//Hello World!

实例2:

代码语言:javascript复制
var a=2;
if(true){var a=3;}
console.log(a);//3

实例3:

代码语言:javascript复制
for(var i=0;i<10;i  ){
console.log('循环体中:' i);//循环体中:0到9
}
console.log('循环体外:' i);//循环体外:10

从实例3中可以看出,var在ES6里是用来声明全局变量

2、let

它是‘让’,var在ES6里是用来声明局部变量

实例1:

代码语言:javascript复制
var a=2;
if(true){let a=3;}
console.log(a);//2

实例2:

代码语言:javascript复制
if(true){let a=3;}
console.log(a);
//报错:Uncaught ReferenceError: a is not defined

实例3:

代码语言:javascript复制
for(let i=0;i<10;i  ){
console.log('循环体中:' i);//循环体中:0到9
}
console.log('循环体外:' i);
//报错:Uncaught ReferenceError: i is not defined

通过两个实例3的对比,我们可以很清楚的明白,var声明的是全局变量,而let声明的是局部变量

作用:

通过上边的实例,我们可以看出,一个let变量我们在不同的作用域声明的时候,不会被影响。而var则会出现冲突。

实例1:

代码语言:javascript复制
for(let i=0;i<10;i  ){
    console.log('循环体外:' i);//循环体外:0到9
    for(let i=10;i<12;i  ){
        console.log('循环体中:' i);//循环体中:10到11,此处会输出10次,在外层的次i输出后,内层循环一次
    }
}

实例2:

代码语言:javascript复制
for(var i=0;i<10;i  ){
    console.log('循环体外:' i);//循环体外:0
    for(var i=10;i<12;i  ){
        console.log('循环体中:' i);//循环体中:10,11
    }
}

从上实例2就可以看出,var的声明会影响其他的相同变量,而let声明只会在各自的作用域声明,不会影响其他作用域的同名变量,这就导致以后我们在不同的作用域不用为声明变量而苦恼!let相当于解放更多的变量供我们使用!

3、const

它是常量的意思,就是声明开始,就对该常量赋值,后边的逻辑操作时只能使用,不能改变的值。

实例1:

代码语言:javascript复制
const a;
a=3;
console.log(a);
//报错:Uncaught SyntaxError: Missing initializer in const declaration

实例2:

代码语言:javascript复制
const a=2;
var a=3;
console.log(a);
//报错:Uncaught SyntaxError: Identifier 'a' has already been declared

实例3:

代码语言:javascript复制
const a=2;
console.log(a);//2

作用:

当我们需要进行最大安全整数比较的时候,我们就需要用一个常量将最大安全整数(Number.MAX_SAFE_INTEGER)声明一个常量,后期在使用的时候不会害怕该值被改变。还有圆周率这些常量在用时的保存。

总结:

通过上边的实例,可以很清晰的明白: 1. var声明的是全局变量,当需要一个变量在全局多个地方使用的时候,就采用var,例如(轮播的index等); 2. let声明的是局部变量,当需要一个变量只是在某一个作用域使用,就采用let,例如(for循环的index等); 3. const 声明的是常量,声明就进行赋值,以后不可改变,只能进行使用!例如(圆周率等)

0 人点赞