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的一些个人总结的更多相关文章

  1. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  2. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  3. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

  4. ES6(块级作用域)

    我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...

  5. es6小白学习笔记(一)

    1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...

  6. ES6之变量常量字符串数值

    ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...

  7. ES6之let命令详解

    let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...

  8. ES6 箭头函数中的 this?你可能想多了(翻译)

    箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. ...

  9. ES6+ 现在就用系列(二):let 命令

    系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...

  10. ES6+ 现在就用系列(一):为什么使用ES6+

    系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...

随机推荐

  1. elasticsearch 不能通过9200端口访问

    修改配置文件 config/elasticsearch.yml network.host: 0.0.0.0

  2. 基于nodejs 的多页面爬虫

    前言 前端时间再回顾了一下node.js,于是顺势做了一个爬虫来加深自己对node的理解. 主要用的到是request,cheerio,async三个模块 request 用于请求地址和快速下载图片流 ...

  3. 关于php内存释放问题 内存溢出问题(二)

    今天抽了一上午时间,来看了看之前解决过内存问题的代码,相对来说,我对自己代码的优化程序非常不满意,一次性导入四万条数据就使代码变得如此繁琐,我想这不是根本的解决方法.通过网上检索,对问题有进一步的分析 ...

  4. 资深小白带你走进OS Memory

    图片来源:http://www.tomshardware.com/ 序言: Memory(内存)是一台计算机组成的重要部分,也是最基础的一部分.其它基础组件有主板.CPU.磁盘.显卡(可独立可集成)等 ...

  5. python之numpy库[2]

    python-numpy csv文件的写入和存取 写入csv文件 CSV (Comma‐Separated Value, 逗号分隔值),是一种常见的文件格式,用来存储批量数据. 写入csv文件 np. ...

  6. js实现整数转化为小数

    toFixed 方法 返回一个字符串,代表一个以定点表示法表示的数字. number .toFixed(i) 参数 bumber 必选项.一个 Number 对象. i 可选项.小数点 后的数字位数. ...

  7. 【麦克风阵列增强】Delay and sum beamforming

    作者:桂. 时间:2017-06-03  15:40:33 链接:http://www.cnblogs.com/xingshansi/p/6937576.html 前言 本文主要记录麦克风阵列的几个基 ...

  8. Linux_Ununtu 16.04 的下载安装并部署.Net Core 网站

    第一次接触Linux也难免有些懵逼,因为公司项目必须用.Net Core 开发一个后端服务应用:第一次用Linux给我的感觉就像在用2000年的手机一样:没用智能的操作:让人崩溃的用户体验.说多了都是 ...

  9. NodeJS+Express+MongoDB 简单个人博客系统【Study笔记】

    Blog 个人博客系统 iBlog是在学习NodeJs时候一个练手项目Demo 系统支持用户注册/登录,内容文章查看,评论,后台管理(定制显示的分类版块,进行文章内容添加)超级管理员还可进行用户管理等 ...

  10. 一道C语言安全编码题目

    1.前言 最近在网上看到一道C语言题目,用C语言实现一个函数,给定一个int类型的整数,函数输出逆序的整数,例如输入123,则输出字符串"321",,输入-123,则输出字符串&q ...