ES6

1.let语法

let用来声明变量,它的用法类似于var,但是所声明的变量只在let命令所在的代码块内有效,
基本用法:
a.块级作用域

{
var a = 10;
let b = 20;
}
console.log(a);
console.log(b);

上面代码在代码块中,分别用let和var声明了两个变量,然后在代码块之外调用这两个变量,结果let声明的变量无法被打印,var声明的变量返回了正确的值.这表明,let声明的变量只在它所在的代码块有效.
b.暂时性死区
在被let修饰的同名变量下,根据就近原则,内部变量屏蔽外部变量
c.不存在变量提升
var命名会发生"变量提升"现象,即变量可以在声明之前使用,值为undefined.这种现象多多少少是有些奇怪的,按照一般逻辑,变量应该在声明语句之后才可以使用.
var的情况:

console.log(a);		//不会报错
var a = 2;

let的情况:

console.log(b);		//报错
let b = 5;

也就意味着被let声明的变量,必须先定义再使用.

d.不允许重复声明

var a = 123;
var a = 234; 	//可以实现
let b = 123;
let b = 234;	//报错!Identifier 'a' has already been declared
2.this和bind和apply和call

this:调用该方法的对象本身
执行该事件的对象本身
bind(this重新指代的对象):只能为匿名函数服务

var box = document.getElementById("box");
document.onclick = function(){
this.style.display = "none";
}.bind(box);

有名函数重新指定this对象:apply call

function fun(){
console.log(this);
};
fun.apply(box);
fun call(box);
fun();
3.JSON.parse/JSON.stringfy

JSON字符串和对象的直接转换

var str = '{"id":"123","name":"大黄"}';
var obj = JSON.parse(str);	//字符串转化成JSON
var str1 = JSON.stringfy(obj);	//JSON转化成字符串

4.const用法

const也是一种声明常量的方式,const命令用来声明常量,一旦声明,其值就不能改变,也就是只读变量.

const a = 10;
a = 100;		//Assignment to constant variable. 报错

基本用法:
a.声明常量
const pi = 3.1415;

b.常量必须初始化
const a; //报错 Missing initializer in const declaration

c.const是块级作用域

d.声明不提升(const修饰的变量必须先定义后使用)

e.const修饰的变量不可重复定义
简单来说,let和const的功能基本类似,只是let用来修饰变量,const用来修饰常量.

5.for in 和 for of
var strArr = ["heihei","haha","laowang"];
       for(let index in strArr){ //遍历下标
       		console.log(strArr[index]);
       }//一般不用来遍历数组,因为会便利到原型链上
      for(let t of  strArr){ //便利值
     		console.log(t);
      }
6.字符串扩展方法

判断字符串是否包含在另一个字符串中:
在ES5中使用的是indexOf()方法,在ES6中可以使用includes(),startsWith(),endsWith()三个方法
indexOf(检索的字符串,要检索的位置): 返回检索到的位置,从0开始,如果没检索到,返回-1
includes(): 返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,参数是否在源字符串的头部。
endsWith(): 返回布尔值,参数是否在源字符串的尾部。

7.箭头函数 针对匿名函数

定义:()=>{}
有参数(参数1,参数2)=>{}
带有返回值()=>{return 返回值}
事件同样可以切换成箭头函数

document.onclick = () =>{
console.log("a");
}
setTimeout(()=>{console.log("a")},2000);
8.解构赋值:解析结构进行赋值

强调格式匹配:等号左边和右边一致
好处: 1.一次性定义很多个变量
let [x,y,z] = [10,11,13];
2.解构赋值可以让一个函数返回多个值 使用[]

function fun(){
return [1,2,3];
}
let [x,y,z] = fun();
console.log(x,y,z);

3.解构赋值可以实现两个数的交换
冒泡排序:

let a = [6,7,8,9,0,5,4,3,2,1];
for(let i=0; i<a.length-1; i++){
        			for(let j=0; j<a.length-i-1; j++){
           				 if(a[j]>a[j+1]){
               				 [a[j],a[j+1]] = [a[j+1],a[j]];
            				}
        			}
    		    }
    		   for(let i=0; i<a.length; i++){
        		console.log(a[i]);
    		   }
9.Set集合

Set集合:var set = new Set(); //定义一个set集合

var set = new Set([12,23,43,54]);

set.add(9); //末尾添加9
set的遍历:

for (let t of set){
console.log(t);
}

Set集合的特点:自动去重
set集合的方法:
add()向集合中添加一个元素
delete()删除集合中某个数
has()判断集合中是否含有某个值
clear()清空集合

10.map

set()向集合中添加一个元素
get(键) 根据键取值
delete(键) 删除集合中某个数
has(键) 判断集合中是否含有某个值
clear() 清空集合

let map = new Map();
map.set(“1”,“大黄”);
map.set(“2”,“大王”);
map.set(“3”,“老王”);
map.delete(“3”);
console.log(map.has(“0”));//false
console.log(map.get(“2”));//大王

map的遍历

for(let t of map){
console.log(t[0] + t[1]);	//0代表key  1代表value
} 
11.Symbol

1、ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
let symbol = Symbol();
let symbol = Symbol(“heihei”); //主要是为了提示信息,作用不大
2、Symbol值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型。凡是属性名属于Symbol类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
let symbol1 = Symbol(“heihei”);
let symbol2 = Symbol(“heihei”);
console.log( symbol1 === symbol2 ); //false;因为每个 Symbol 值都是唯一的

3、注意,Symbol函数前不能使用new命令,否则会报错,这是因为生成的Symbol是一个原始类型的值,不是对象。也就是说,由于Symbol值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。
4、由于每一个Symbol值都是不相等的,这意味着Symbol值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。
Symbol值作为对象属性名时,不能用点运算符。在对象的内部,使用Symbol值定义属性时,Symbol值必须放在方括号之中
symbol的属性会隐藏于for…in循环中

let age = Symbol();
    	var a = {name:"老王",
           	     [age]:18,       看不到
                     hobby:"写代码"};
        for(let t in a){
        console.log(a[t]);
 }        
    console.log(a[age]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值