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. awk之随机函数rand()和srand() (转)

    转自:http://blog.chinaunix.net/uid-10540984-id-2942041.html 文件: 1234567 abcdefg ......   现在想要随机抽取5列组成下 ...

  2. 使用Generator 自动生成 model mapper mapping 文件

    1.下载包 地址http://download.csdn.net/detail/u012909091/7206091 2.下载完成解压文件到任意目录 3.删除下mybatis-generator-co ...

  3. php优化代码技巧

    1. 如果一个方法可静态化,就对它做静态声明.速率可提升至 4 倍. 2. echo 比 print 快. 3. 使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符串连接. 4. 在执行 ...

  4. Linux获取UUID

    Linux内核提供有UUID生成接口: cat /proc/sys/kernel/random/uuid Linux上一切皆文件,不管什么程序,读取文件就能获取一个UUID.

  5. 一篇文章介绍GItHub的基础使用

    最近复习了一下Git的使用,简单总结了一些.以供以后查阅和同行参考. 一,安装 首先是Linux下: 打开shell ,输入 sudo apt-get install git-core 之后回车输入密 ...

  6. (转)CSS颜色及<a>标签超链接颜色改变

    CSS颜色大全 <a>标签超链接颜色改变 A:hover   {BACKGROUND-COLOR:   #ffccff;   COLOR:   #0080ff}     (hover表示鼠 ...

  7. 在WIN SERVER 2016上安装DOCKER(带过坑)

    目录 1    概要    1 1.1    主要优势    1 2    在Windows Server上部署Docker    2 概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解 ...

  8. angular路由最基本的实例---简单易懂

    <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...

  9. C#基础知识-XML介绍及基本操作(十)

    在讲了一系列的基础文档之后,现在开始讲一些实例.对于一些数据不是很大的程序,或者只是一些配置文件,需要本地存储的,完全可以使用XML代替数据库,因为只是去操作单个文件会比操作数据库要简单很多,在程序中 ...

  10. 【转载】Static 关键字的作用

    原始日期:2016-07-16 17:53   一   普通的static关键字 1.  静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变 ...