es6的一些个人总结
es6的一些知识点
前言:es6(ECMAscript2015)标准
let、const、var的一些区别
- let、const 块级作用域、全局作用域、函数作用域
- var 全局作用域、函数作用域
变量提升的问题:
var : true
let、const : false
例子:
console.log(a);//undefind
let a=1;
块级作用域:例如在一个函数,for循环。。。区块之内!
const 常量,值不可更改。
let、var 变量,值可以更改
严格模式
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
消除代码运行的一些不安全之处,保证代码运行的安全;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫。
"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。
“use strict”
模板字符串(Template Strings)
- 规定了一种新的string方法可用 `` 斜引号来创建字符串的代码块
- 绑定变量用${}来绑定。
let name="xiaosan";
let age=22;
let home="china"
let str1=`she's name ${name},
she age ${age},
she homes's ${home}`
alert(str1)
- 字符串内可直接换行
let str1=`she's name ${name},
she age ${age},
she homes's ${home}`
alert(str1)
- 标签模板字符串。
function tag(strings,...args){ //...扩展运算符
//console.log(strings);
//console.log(args);
let str='';
for(var i=0,l=strings.length-1;i<l;i++){
str=str+strings[i]+args[i];
}
str+=strings[l];
return str
}
let name1="xiaomi";
let age1=23;
let str3=tag`
she's nam1 ${name1}
she age ${age1}
`
console.log(str3)
增强的对象字面量(自变量)
- 对象属性能够简写;
- 对象方法可以简写function关键字
let name="张三";
let age=22;
let zhangshan={
name,
age,
runing(){
console.log("我会跑")
}
}
- 对象属性名可以书写自动计算形式
- 原型继承__proto__
let people={
eat(){
console.log("我会吃")
},
speak(){
console.log("我会说话")
},
feeling(){
console.log("我有感情")
}
}
let caowei={
name:name,
__proto__:people,//设置对象原型,用来继承
study(){
console.log("I have sutying ok!")
}
}
console.log("my name's"+caowei.name)
caowei.study();
caowei.eat();
caowei.speak();
caowei.feeling();
console.log(caowei)
解构赋值
- es6允许我们按照一定结构提取数组与对象里的值,赋给变量
- 函数的解构赋值
- 说的明白一点解构赋值它的类型就是数组跟对象
例子
//数组
let [a,,c]=[1,2,3];
console.log(a,c)
//对象
let obj={
x:1,
y:2
}
let {x,y}=obj
console.log(x,y)//1 2
//函数操作
//函数传对象
function fn(person){
let name=person.name;
let age =person.age;
console.log(name,age)
}
let aa={name:"xiaosan",age:18}
fn(aa)*/
/* function fn({uname:name,age,sex="女人"}){
console.log(name,age,sex)
}
let bb={uname:"xiaosan",age:18}
fn(bb)*/
//es5 函数传数组
/*function fn(Arr){
let x=Arr[0];
let y=Arr[1];
let z=Arr[2];
console.log(x,y,z)
}*/
/*function fn([x,y,z,d=22]){
console.log(x,y,z,d)
}
let arr=[9,5,8]
fn(arr)
//字符串解构赋值
let str="123456";
let [a,b,c,d,e,f,g=50]=str;
console.log(a,b,c,d,e,f,g)
扩展运算符
- 扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值操作数组操作对象(自变量对象ps:兼容问题)
//展开数组
let arr=[1,2,3]
let arr2=arr;
// console.log(arr2);
document.write(arr2) //1,2,3
let arr3=[...arr] //也可以看做是拷贝
console.log(arr3)//( 3) [1 2 3]
//展开对象
let obj={
name:"zhangsan",
age:19,
}
let obj1={
...obj,
sex:"man"
}
console.log(obj1) //报错 现在浏览器不支持但是方法确实可行可以采用babel编译一下使用
//展开函数
function myFunction(x, y, z) {
console.log(x,y,z)//0 1 2
}
var args = [0, 1, 2];
myFunction(...args);
function myFunc(a, b, ...rest) {
console.log(rest.length);//3
}
myFunc(1,2,3,4,5); // => 3
function myFunction(x, y, z,...l) {
console.log(x,y,z,l)//0 1 2
}
var args = [0, 1, 2,4,5,6];//0 1 2 (3) [4,5,6]
myFunction(...args);
//数组 与 扩展运算符结合
let c = ["abc",11,12]
let a = [1, 3, 4, 5,c],
b = [...a, 6, 7, 8, 9]
// b=a;
console.log(b)//(8) [1,2,3,4,5,6,7,8,9];
箭头函数=>
- ES6允许使用“箭头”(=>)定义函数
var f = v => v
上边的函数可以书写为
var f = function(v) {
return v;
};
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
var sum = (num1, num2) => { return num1 + num2; }
由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号。
var getTempItem = id => ({ id: id, name: "Temp" });
箭头函数可以与变量解构结合使用。
const full = ({ first, last }) => first + ' ' + last;
// 等同于
function full(person) {
return person.first + ' ' + person.last;
}
默认参数,剩余参数,扩展参数
参数的默认参数,剩余参数,拓展参数
//默认参数
let sayHello=(name,age=25)=>{
let str=`my name's ${name},age's ${age} old`
//console.log(name,age)
console.log(str)//my name's chenxu,age's 25 old
}
sayHello("chenxu")
//扩展参数
let sum=(a,b,c)=>{
console.log(a,b,c)
}
let arr=[4,5] //扩展
sum(1,...arr)
//剩余参数
let sum1=(a,b,...c)=>{
console.log(c);
console.log(a,b); //剩余
}
sum1(1,2,3,4,5,7,9)
*/
let sum2=(a,b,...c)=>{
console.log(c);
var result=c.reduce((a,b)=>a+b);
console.log(result);
console.log(a,b);
}
sum2(1,2,3,4,5,7,9)
es6的一些个人总结的更多相关文章
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- ES6的一些常用特性
由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...
- ES6(块级作用域)
我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...
- es6小白学习笔记(一)
1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...
- ES6之变量常量字符串数值
ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...
- ES6之let命令详解
let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...
- ES6 箭头函数中的 this?你可能想多了(翻译)
箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. ...
- ES6+ 现在就用系列(二):let 命令
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
- ES6+ 现在就用系列(一):为什么使用ES6+
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
随机推荐
- 刨根究底字符编码之八——Unicode编码方案概述
Unicode编码方案概述 1. 前面讲过,随着计算机发展到世界各地,于是各个国家和地区各自为政,搞出了很多既兼容ASCII但又互相不兼容的各种编码方案.这样一来同一个二进制编码就有可能被解释成不 ...
- Zepto源码分析-架构
构造函数 Zepto.js 是专门为智能手机浏览器推出的javascript库, 拥有与和jQuery相似的语法. 它的优点是精简,压缩后5-10K. 不支持IE MIT开源协议 结构 http: ...
- 解密Lazy<T>
1.Lazy<T>的使用 无意间看到一段代码,在创建对象的时候使用了Lazy,顾名思义Lazy肯定是延迟加载,那么它具体是如何创建对象,什么时候创建对象了? 先看这段示列代码: publi ...
- 普通自适应遗传算法AGA的PC和PM公式解读
写在前面 本文对于普通自适应遗传算法的Pm和Pc的公式进行了解读,此公式为M.Srinivas 和 L .M. Patnaik在1994年的<Adaptive Probabilities of ...
- linux下查看账号密码的过期时间和设置时间
[root@localhost myshell]# chage -l Usage: chage [options] [LOGIN] Options: -d, --lastday LAST_DAY se ...
- bug 修复:上传库存时前端回发file_name参数丢失;
# tmp_file = os.path.join(os.path.abspath('youcart/tmp'), json.loads(request.data).get('file_name')) ...
- Swoole笔记(三)
WebSocket 使用Swoole可以很简单的搭建异步非阻塞多进程的WebSocket服务器. WebSocket服务器 <?php $server = new swoole_websocke ...
- Java经典编程题50道之二十六
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. public class Example26 { public static void main(Stri ...
- Python爬虫Dota排行榜爬取
1.分析网站 打开开发者工具,我们观察到排行榜的数据并没有在doc里 doc文档 在Javascript里我么可以看到下面代码: ajax的post方法异步请求数据 在 XHR一栏里,我们找到所请求的 ...
- VR全景,让VR不再是“空中楼阁“——智慧城市常诚
VR的风口来了又走,而VR技术的支持者却始终在探索VR在各个领域的应用.最近,有业内专家表示,VR给带来的真正好处是,容易让人产生同理心,但同理心究竟能帮助我们做什么呢? 我第一次见到挪威建筑师Haa ...