1.定义变量
let
a).块作用域 , 不同于var的函数作用域
b).不可以重复定义同一个变量名
注:
{} + let 组合使用,
可以替代以前的封闭空间 : (function(){})();
const
a).常量赋值 :需要立即初始化 且 初始化后不可以修改。
b).和let一样 , 不可重复声明同一变量。
2.字符串 拼接
let str = `my english ${x} ` ;
3.解构赋值
let [a,b,c] = [10,20,30]; // 和顺序有关
let [a,[b,c],d] = [1,[2,3],4] ;
let {a,b,c} = {b:12 , a:6 , c:4}; // 和顺序无关
let {a = 1, b = 2} = {}; // 赋了默认值
4.复制数组
let arr1 = [1,2,3];
let arr2 = Array.from(arr1); //方式一
let arr3 = [...arr1] ; //方式二
补:‘...’的其他小技巧
function method_1(...args){
arguements.push(99);// 报错,没有push方法
args.push(99); //这样就是个数组 可以push
}
5. for-of 循环
a).可以循环数组 ,不可以循环json
b).是用于循环map的
for( let [k,v] of xx_map){
console.log(k,v);
}
6.Map
map.keys() ;
map.entries();
map.values();
map.get();
map.delete();
7.箭头函数 =>
写法 :let show = () => {}
注意 :
箭头函数中的this指向window
不能使用arguments 实例
8.面向 对象语法
选项卡例子 继承方式实现 自动切换 // todo
9.函数给默认值
function move(a = 1 , b){}
10.模块化
导出模块
const a = 12 ;
export default a ;
引用模块
先引入bebel.js/traceur.js等编译器
再引入bootstrap.js(和css中的bootstrap无关)
<!-- 并且 type 必须为 module -->
<script type = 'module' >
import modA from './xxx.js' ;
</script>
多模块导出 及引入
导出
const a = 5 ;
const b = 12 ;
export default {a,b};
引入并使用
import xxx from './xx.js' ;
console.log(xxx.a + xxx.b);
11. Promise
用来传递异步操作的数据(消息)
pending(等待,处理中) --> Resolve (完成,fullFilled)
--> Reject (拒绝,失败)
var p1 = new Promise(function(resolve,reject){
if(成功了){
resolve('成功数据');
}else{
reject('失败原因');
}
});
后续 : p1.then(成功func(resolve),失败func(reject));
例如:
p1.then(function(val){
alert(`成功了${val}`);
return `${val}恩恩` ;
},function(val){
alert(`失败了${val}`);
return `${val}呜呜` ;
});
如果p1走到了 if语句 , 那么结果就是 : 成功了成功数据
反之,走到else , 那么结果就是 : 失败了失败原因
也就是说 new Promise() 中的函数 只是用来 自定义成功失败逻辑的
而真实的对 成功/失败的数据的 处理 是放在后续的then中操作的。
注意then中的函数如果有返回值,这个值会返回到下一个then的对应参数中。
catch的用法:
p1.then(function(val){
alert(val);
throw '强行抛出';
}).catch(function(ex){
alert(ex);
});
Promise.all()用法:
var p2 = Promise.resolve(3);
var p3 = Promise.reject();
//all()中所有的promise对象都成功了,才会走成功函数
// 由于p3是失败了的 Promise对象, 所以,会走失败的分支;和true/false无关
Promise.all([false,p2,p3]).then(function(){
alert('成功了');
},function(val){
alert('失败了');
});
Promise.race() --挑最快的用
var p4 = new Promise(function(){
setTimeout(resolve,500,'one');
});
var p5 = new Promise(function(){
setTimeout(resolve,100,'two');
});
Promise.race([p4,p5]).then(function(val){
console.log(val); //display 'two'
});
Promise.resolve(value);
Promise.resolve(promise);
Promise.resolve(array);
12.Generator --生成器
是一个函数 , function紧接着加个*
可以遍历,所以就是个迭代器
语法:
function* show(){
yield 'Hello';
yield 'World';
yield 'ES6';
}
var res = show();
console.log(res.next());//{value:Hello , done:false}
console.log(res.next());
console.log(res.next());
注意:yield本身没有返回值
next()可以带参数,给上一个yield了
for-of可以循环generator函数:
function* fn(){
yield 1 ; yield 2 ;yield 3 ;
return 6;
}
for(var r of fn()){
r.next();
}
generator在json对象中写法:
var json = {
* show(){
yield 'xx' ;
}
};
- 前端学习笔记 --ES6新特性
前言 这篇博客是我在b站进行学习es6课程时的笔记总结与补充. 此处贴出up主的教程视频地址:深入解读ES6系列(全18讲) 1.ES6学习之路 1.1 ES6新特性 1. 变量 2. 函数 3. 数 ...
- Atitit js版本es5 es6新特性
Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- ES6新特性概览
本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...
- ES6新特性之模板字符串
ES6新特性概览 http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串 http://www.infoq.c ...
- ES6新特性:Proxy代理器
ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ...
- ES6新特性简介
ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...
- 轻松学会ES6新特性之生成器
生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ...
- 必须掌握的ES6新特性
ES6(ECMAScript2015)的出现,让前端开发者收到一份惊喜,它简洁的新语法.强大的新特性,带给我们更便捷和顺畅的编码体验,赞! 以下是ES6排名前十的最佳特性列表(排名不分先后): 1.D ...
随机推荐
- D - Beautiful Graph (深搜)
这个题深搜容易解决,结果用了广搜,动手之前还是要想清楚,然后自己的代码写错的情况下,没有重写,而是在原有的基础上,进行修改,结果有个判定的初始化条件放错位置,浪费了一个小时... 就是给一个无向图,任 ...
- tomcat web服务的搭建
在安装tomcat之前必须安装jdk 安装配置jdk 1.查看虚拟机中是否已安装java包 # rpm -qa | grep java 如果查找已安装java包,先卸载全部的openjdk #rpm ...
- 十二、js去掉空格_比较字符长度_中英文判断_页面初始化_简体字与繁字体判断
1.去掉字符串前后所有空格 function trimBlank(str){ return str.replace(/(^\s*)|(\s*$)/g, ""); } 2.字符串长度 ...
- canvas象棋 画图
今天写了一个canvas画图的象棋 .js基础不行,只画了个图,以后补充... <!DOCTYPE html> <html lang="en"> <h ...
- java学习-初级入门-面向对象①-面向对象概述-结构化程序设计
为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类. 要求进行结构化程序设计. 学生类: Student 要求:存储学生的基本信息(姓名.性别.学历层次和年级),实现学生信息的 ...
- Hadoop入门概念
Hadoop作者:Dong Cutting. 受Google三篇论文的启发. 版本: Apache:官方版本 Cloudera:官方版本的封装,优化,打很多patch,商业版本 HortonWorks ...
- 28 最小的K个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路: 解法1:对于小规模数据,可以采用类似前题的快速排序思路 ...
- C语言学习从入门到精通书籍,10万读者都认可
C语言程序设计从入门到精通 10万读者认可的编程图书精粹 零基础自学编程的入门图书 详解C语言编程思想和核心技术 很多初学者,对C语言.c++的概念都是模糊不清的,C语言.c++是什么,能做什么,学的 ...
- spring源码第一章_获取源码并将源码转为eclipse工程
1.通过http://gitforwindows.org/下载github 2.通过http://services.gradle.org/distributions/下载gradle:gardle类似 ...
- 2.15 学习总结 之 天气预报APP volley(HTTP库)之StringRequest
一.说在前面 昨天 学习了序列化的相关知识 今天 1.学习 volley(HTTP库)的 StringRequest请求 2.使用序列化完成相关案例 遇到问题 请求到的参数的出现中文乱码问题 ...