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可以修改
对象的解构复制
数组解构
对象解构
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。