ES6语法入门学习:
推荐阮一峰的入门学习网站:https://es6.ruanyifeng.com/#docs/let
1、关于var的使用
(1)使用var的弊端
使用var关键字声明变量的弊端:
1、var声明的变量有预解析,造成 逻辑混乱,可以先使用,后声明。
2、var可以重复定义同一个变量,逻辑错误,第二次应该是修改变量,而不是定义。
3、var用在for循环条件中,造成for 循环的污染的问题。
4、var 声明的变量没有块级作用域(ES5中的作用域:全局和局部)。
(2)main.js文件
以下是以前做的一些笔记,我贴上来,需要的朋友可以拿去测试看看。
// (1)使用var定义变量,会出现变量提升,不太符合逻辑,一般应该是先定义了才能使用
console.log(a); //undefined
var a = 10;
// (2)使用var可以重复定义一个变量。居然可以重复定义,正常应该规范点,定义了就不要再定义了
var a = 10;
var a = 120;
console.log(a); //120
// (3)for循环里面使用var定义的变量是临时变量,会污染全局。希望临时变量就只在for循环里面用
for (var i = 0; i < 5; i++) {
console.log(i); //0 1 2 3 4
}
console.log(i); //5
// (4)js没有块级作用域,在{}里面使用var定义的变量,外界也可以使用
{
var a = 10;
}
console.log(a); //10
2、关于let的使用
(1)let的特点
let的特点:
1、let声明的变量没有预解析,不会有变量提升
2、let不可以重复定义同一个变量
3、let用在for循环条件中,不会造成for 循环的污染的问题
4、let声明的变量有块级作用域(ES6中的作用域:全局和局部还有块级作用域)
------js的作用域:全局作用域、局部作用域、块级作用域(ES6)
(2)main.js文件
// (1)let不会有变量提升,需要先定义再使用。如果未定义直接输出,会报错。
// console.log(a);
// let a = 10;
//(2)let不允许重复定义变量,重复定义报错
// let b = 20;
// let b = 30;
// (3)let在for循环中定义的临时变量就只能在for循环中使用,for循环结束,临时变量就会被回收
// for (let i = 0; i < 5; i++) {
// console.log(i); //0 1 2 3 4
// }
// console.log(i); //报错,i未定义。
//(4)在{}里面使用let定义变量,是有块级作用域的,外界无法访问使用。
{
let a = 10;
}
console.log(a); //报错,a未定义
// 报错会提示在哪一行,注意查看
3、关于const的使用
(1)使用const的注意事项:
注意:
(1)常量不能被修改,修改会报错
(2)常量一般用大写变量名定义
(3)引入某个模块,变量名就可以小写。例如const fs = require(‘fs’); 例如如果引入了某个带横杠的,命名变量不允许带横杠,可以使用驼峰命名法。
(4)常量对象的属性可以修改
(5)常量数组的元素可以修改
(2)代码如下:
//常量:不会变化的量--使用const定义,不允许重新赋值
// const PI = 3.1415; //圆周率
// PI = 4; //报错,常量不允许重新赋值。
// console.log(PI);
const OBJ = {
name: "node.js",
age: 11
}
// OBJ = 12; //会报错
OBJ.age = 10;
console.log(OBJ); //age会被修改为10.因为OBJ是一个对象,里面存放的是一个地址,不能直接改OBJ的指向。但是可以改地址指向的内容。
const ARR = [10, 20, 30];
// ARR = [1, 2, 3]; //报错
ARR[0] = 40;
console.log(ARR); //可以修改