let 变量声明

1.不存在变量提升

//使用var声明
console.log(a);//undefined
var a = 1;
//使用let声明
console.log(b);
let b = 2; //报错

2.只在当前作用域有效

for(var i = 0;i<4;i++){}
i;//4
for(let n=0;n<4;n++){}
n;//报错

3.暂时性死区
如果同一个作用域内已经声明过变量了,
再声明会报错,let不允许重复声明,并不会像var一样覆盖原来的。

const 声明只读变量

//不可以重复声明
const n = 1;
n = 2;//报错
//const声明的常量是不可修改的
let array = [1,2];
const static = array;
array.push(3);
static ;//1,2,3
//const声明的如果是一个对象,对象本身可以改变,但指向的地址不可改变。
即static指向array内存的指针不可以修改,但指针指向的内存array可以修改

对象的解构复制

数组解构

clipboard.png

对象解构

let {name,age} = {name:'chan',age:23}
name //"chan"
age //23
//同样属性名赋值 xx = 'xj'
let {school:xx} = {school:'xj'}
xx //"xj" 这种方式是给xx对象school的属性值

默认赋值

let {name='chan'} ={age:1}
//name如果没有传值的时候,等于chan
//如果传值了let {name='chan'} ={name:'kc'} name=kc 
name
"chan"

//传值的情况下
let {age=30} = {age:20}
age
20

includes

查看某个字符or元素存不存在
字符串调用

let string = 'abcdefg'
// 判断h存不存在
string.includes('h') //false
// 判断a存不存在
string.includes('a') //true

数组调用
判断某一个对象是否存在数组中

let a = {name:'chan',age:10}
let b = {name:'louis',age:20}
let objArr = [a,b]
objArr.includes(a) //true
objArr.includes({name:'chan',ageL:10}) //false

Set数据结构

Set结构类似于数组,但所有成员的值都是唯一的。

const unique = new Set([1,2,3,4,4])
unique;//1,2,3,4
//生成set数据结构的对象时内部带有===的检验方法
const unique = new Set([1,2,'2'])
unique;// 1,2,'2'
//添加成员
unique.add(3);
//获取长度
unique.size;//4
//Array.from可以将set结构转换为数组
let arr = Array.from(unique)
arr;//[1,2,'2',4]
//获取键值,set结构没有键,只有键值 keys(),values()用法相同
unique.keys()//返回value
//entries()返回键值和键名,键名和键值相同

class

class定义类和es5的构造函数相同,class Point 等同于 Point.prototype = {}
Point 必须由new 操作符来调用 否则会报错
也可以通过let fun = class Point{}来赋值,但是通过这样的方法并不能在外部调用到Point
不存在变量提升 与es5 function functionName 有所不同

class Point {
        //等同于es5的构造函数,this指向实例
        constructor(x,y){
          this.x = x;
          this.y = y;
        }
        //方法之间不需要用逗号隔开
        fn(){
          console.log('x is'+this.x+',y is '+ this.y)
        }
      }
      // typeof Point 'function'
      // Point === Point.prototype.constructor //true
      let dot = new Point(100,0);
      dot.fn()// x is 100,y is 0

someone
218 声望7 粉丝

前端工程师