前端笔记——ES6

本文详细介绍了ES6中的核心特性,包括let和const声明变量的规则,解构赋值在数组和对象中的应用,模板字符串的使用以及箭头函数的语法和this指向。此外,还提到了Set和Map数据结构,以及生成器函数的基本概念。这些内容对于理解JavaScript的现代语法至关重要。
摘要由CSDN通过智能技术生成

前端笔记——ES6基础知识

let的使用

用来声明变量。它的用法类似于var ,但是所声明的变量,只在let命令所在的代码块内有效。

存在块级作用域{}

不存在声明提升

不允许重复声明(包括普通变量和函数参数)

链接: let 和 var 的区别

const的使用

用来声明常量,不要试图改变常量的值.其他语法参照let

解构赋值

按照一定模式,从数组和对象中提取值,对变量进行赋值。

数组

let [a, b, c] = [1, 2, 3]; //a = 1; b = 2; c = 3

默认赋值

[a, b = 2] = [3] ; // a = 3, b = 2
let c;
[a = 3] = [c]; // a = 3, c = undefined

对象

let {a,b}= {a:" aaa" , b:" bbb" }; // a = " aaa" , b = " bbb"
let {a:b}= {a:" aaa" }; // a = " aaa" , b = " aaa"
let{a,b= 5}= {a: 1}; // a = 1, b = 5

模版字符串

将变量或表达式直接嵌入字符串,使用反引号(``) 拼接多行字符串,所有模板字符串的空格和换行,都是被保留的。

	let str = `shhsggdhgdgd
    hsjhjhjsggshg`;
    console.log(str);

模板字符串中嵌入变量,需要将变量名写在 ${ } 中,还可以在字符串中调用函数。

		let name = 'marry',
            age = 20;
        console.log(`${name}今年已经${age}岁了`);
        
        function func(){
            return 'string';
        }
        let str=`this is ${func()}`; 
        console.log(str);

模板字符串的大括号内部,就是执行Javascript代码

支持嵌套

链接: 模版字符串.

箭头函数

只含有1个表达式
注意:只有一个参数的话括号才可以省略

	   var f = () => 1;
       console.log(f()); //1
       var t = (a) => a;
       console.log(t(10)); //10
       var f = v => v;
       // 等同于
       var f = function (v) {
       return v;
		};

含有多条语句
由于大括号被解释为代码块,如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

	   var k = (a) =>{
           let b = 2;
           return a +b;
       }
       console.log(k(10)); 

this的指向问题
箭头函数的this指向定义时所在的作用域,而不是执行时所在的作用域! 因此:

  • call,apply,bind 三个方法不适用于箭头函数
  • 不能用作构造函数
  • 不能使用arguments
  • 不能作为对象的方法调用,因为还是指向上下文,而不是调用的对象
  • 如果需要this操作,不能用作addEventListener里传的参数
	var obj = {
        'name': 'marry',
        'f' :function(){
            console.log(this);
            //这就是定义时所在的作用域了,this指向和这条语句this的指向一样
            setTimeout(()=>{console.log(this.name)},1000);
        }
    }

参考链接
例题
在这里插入图片描述
在这里插入图片描述

set结构

类似数组,但是它的成员没有重复值

	let set = new Set([1,2,3,4,4]);
	>undefined
	>set
	Set(4) {1, 2, 3, 4}

[…set] //…扩展运算符,将类数组对象转换以逗号分割的序列

	let set = new Set([1,2,3,4,4]);
	let arr = [...set];//再次将set结构转化为数组

set 的遍历用 for of

	let set = new Set([1,2,3,4,4]);
	for (let i of set){
		console.log(i);
	}

set的属性方法

set.size //长度  
set.add(0)  set.delete(0)  set.has(0)   set.clear()
keys(): 返回键名的遍历器
// for (let item of set.keys0) { console.log(item); }
values(): 返回键值的遍历器
entries(): 返回键值对的遍历器
forEach(): 使用回调函数遍历每个成员
//set.forEach((value, key) => console.log(value * 2))

注意:键名和键值其实都指的是set的值\

例题
在这里插入图片描述

变量set具有成员不重复的特点,对于原始值来说,不重复指的是值不重复,而对于对象, 函数, 数组等引用值来说, 看的是地址, 只要地址不一样,就不算重复, 即使数组长得一摸一样. 由此分析之后可得set最后保留的值是[[1], [], [], [1] ] .

map结构

	let map = new Map([["aame","john"],["age", 30]]);

map的属性方法

map.set(1,1);
map.size //长度
map.set(key,value); map.get(key); 
map.delete(key);map.has(key);map.clear();
keys(): 返回键名的遍历器
values(): 返回键值的遍历器
entries(): 返回键值对的遍历器
forEach(): 使用回调函数遍历每个成员
//map.forEach((value, key) => console.log(value * 2))

生成器函数(generator)

生成器函数链接

注意:next()里可以传参数,参数表示上一次yield返回的值。

	function* foo(x){
		var y = 2*(yield(x+1));
		var z = yield(y / 3);
		return(x + y + z);
	}
	var it = foo(5);
	console.log(it.next (3));
	console.log(it.next(12));
	console.log(it.next(13));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值