JS的ES6

1.let

let age = 12;

(1). 作用:

  • 与var类似, 用于声明一个变量

(2). 特点:

  • 在块作用域内有效

  • 不能重复声明

  • 不会预处理, 不存在提升

(3). 应用:

  • 循环遍历加监听

  • 使用let取代var是趋势

2.const

const sex = '男';

(1). 作用:

  • 定义一个常量

(2). 特点:

  • 不能修改

  • 其它特点同let

(3). 应用:

  • 保存不用改变的数据

3.解构赋值

(1)对象的解构赋值:从对象的属性中取到想要的属性值

  1. let obj = {name : 'kobe', age : 39};
  2. //对象的解构赋值
  3. let {name,age,xxx} = obj; //定义的变量要与属性key相同,使用大括号{}
  4. console.log(age,name,xxx); //39 "kobe" undefined

(2)数组的解构赋值

  1. let arr = ['abc', 23, true];
  2. let [, b, c, d] = arr; //使用中括号[],可以使用占位空的,还是按顺序获得数组下标对应的值
  3. console.log(b, c, d); //23 true undefined

用处:简化传参

  1. let obj = {name : 'kobe', age : 39};
  2.  
  3. function person1({name, age}) {
  4. console.log(name, age);
  5. }
  6. person1(obj);

4.模版字符串

模板字符串必须用 `` 包含,变量用${xxx}

  1. let obj = {
  2. name : 'anverson',
  3. age : 41
  4. };
  5. console.log('我叫:' + obj.name + ', 我的年龄是:' + obj.age); //我叫:anverson, 我的年龄是:41
  6.  
  7. console.log(`我叫:${obj.name}, 我的年龄是:${obj.age}`); //我叫:anverson, 我的年龄是:41

5.简写的对象写法:

  • 省略同名的属性

  • 省略方法function以及前面的:

  1. let x = 3;
  2. let y = 5;
  3. //普通额写法
  4. // let obj = {
  5. // x : x,
  6. // y : y,
  7. // getPoint : function () {
  8. // return this.x + this.y
  9. // }
  10. // };
  11. //简化的写法
  12. let obj = {
  13. x, //为外部的x
  14. y, //为外部的y
  15. getPoint(){ //省略:function
  16. return this.x
  17. }
  18. };
  19. console.log(obj, obj.getPoint()); //Object 3

6.三点运算符

又称:rest参数

作用:用来取代arguments 但比arguments灵活

限制:

  • 只能是最后部分形参参数。

  • 只能遍历数组,不能遍历对象。

  1. //作为形参,是真实的数组可以遍历
  2. function fun(...values) {
  3. console.log(arguments);
  4. // arguments.forEach(function (item, index) {
  5. // console.log(item, index); //报错,arguments是伪数组不能遍历
  6. // });
  7. console.log(values);
  8. values.forEach(function (item, index) {
  9. console.log(item, index);
  10. })
  11. }
  12. fun(1,2,3);
  13.  
  14. //将一个数组插入到另一个数组
  15. let arr = [2,3,4,5,6];
  16. let arr1 = ['abc',...arr, 'fg'];
  17. console.log(arr1); //'abc' 2 3 4 5 6 'fg'

7.形参的默认值

作用:当不传入参数的时候默认使用形参里的默认值

  1. //定义一个点的坐标
  2. function Point(x=12, y=12) {
  3. this.x = x;
  4. this.y = y;
  5. }
  6. let point = new Point(25, 36);
  7. console.log(point); //25 36
  8. let point2 = new Point();
  9. console.log(point2); // 12 12

8.箭头函数

又称:lambda表达式[和Java的差不多,但符号是=>]

  1. //1.普通写法
  2. let fun = function () {
  3. console.log('fun()');
  4. };
  5. fun();
  6. //2.没有形参,并且函数体只有一条语句
  7. let fun1 = () => console.log('fun1()');
  8. fun1();
  9. console.log(fun1());
  10. //3.一个形参,并且函数体只有一条语句
  11. let fun2 = x => x;
  12. console.log(fun2(5));
  13. //4.形参是一个以上
  14. let fun3 = (x, y) => x + y;
  15. console.log(fun3(25, 39)); //
  16.  
  17. //5.函数体有多条语句
  18. let fun4 = (x, y) => {
  19. console.log(x, y);
  20. return x + y;
  21. };
  22. console.log(fun4(34, 48)); //

特殊点在this:

箭头函数的this看外层的是否有函数,
  • 如果有,外层函数的this就是内部箭头函数的this.
  • 如果没有,则this是window。

箭头函数在定义时就确定了!!!使用call,apply,bind都不能绑定this。

一般函数得看谁调用他,this就是谁,可以使用call,apply,bind。

  1. <button id="btn">测试箭头函数this_1</button>
  2. <button id="btn2">测试箭头函数this_2</button>
  1. setTimeout(() => {
  2. console.log(this); //window
  3. }, 1000)
  4.  
  5. let btn = document.getElementById('btn');
  6. //没有箭头函数
  7. btn.onclick = function () {
  8. console.log(this); //btn
  9. };
  10. //箭头函数
  11. let btn2 = document.getElementById('btn2');
  12.  
  13. let obj = {
  14. name: 'kobe',
  15. age: 39,
  16. getName: () => {
  17. btn2.onclick = () => {
  18. console.log(this);
  19. };
  20. }
  21. };
  22. obj.getName(); //window
  23.  
  24. function Person() {
  25. this.obj = {
  26. showThis: () => {
  27. console.log(this);
  28. }
  29. }
  30. }
  31. let fun5 = new Person();
  32. fun5.obj.showThis(); //Person
  1. var name = "windowname";
  2. var oo = {
  3. name:"outname",
  4. ll :{
  5. inname : "inname",
  6. f : () => console.log(this),
  7. ff(){
  8. console.log(this);
  9. }
  10. }
  11. }
  12.  
  13. var obj4 = {
  14. name : "name"
  15. }
  16.  
  17. oo.ll.f(); //window
  18. oo.ll.ff(); //调用它的ll ==> Object {inname: "inname"}
  19. oo.ll.ff.call(obj4); //obj4 ==>Object {name: "name"}
  20. oo.ll.f.call(obj4); //绑定不了还是window

JS的ES6的基础语法的更多相关文章

  1. 关于JS脚本语言的基础语法

    JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱 ...

  2. js进阶 10-2 JQuery基础语法是什么

    js进阶 10-2 JQuery基础语法是什么 一.总结 一句话总结: 1.jquery语法超级简单:基础语法是:$(selector).action() 2.jquery选择的时候是带了引号的,肯定 ...

  3. 9.12 开课第9天 (JS脚本语音:基础语法、语句)

    全称JavaScript    网页里面使用的脚本语音      非常强大的语言 基础语法:1.注释语法   单行注释//    多行注释/**/ 2.输出语法   alert(信息);  弹出信息  ...

  4. 前端学习笔记--js概述与基础语法、变量、数据类型、运算符与表达式

    本篇记录js的概述与基础语法.变量.数据类型.运算符与表达式 1.概述与基础语法 2.变量 举例: 3.数据类型 4.运算符与表达式

  5. WebStorm ES6 语法支持设置和ES6语法的JS文件编译为ES5语法文件

    ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0.ES6的目标,是使得JavaS ...

  6. JS基础语法(二)

    目录 JavaScript基础语法(二) 八. 函数 1. 函数的概念 2. 函数的使用 声明函数 调用函数 3. 函数的封装 4. 函数的参数 函数的参数匹配问题 5. 函数返回值 6. argum ...

  7. 9.12/ css3拓展、js基础语法、程序基本知识、数据类型、运算符表达方式、语句知识点

    css3拓展: <display:none>  将某个元素隐藏       <visibility:hidden>  也是将某个元素隐藏 <display:block&g ...

  8. 让 Node.js 支持 ES6 的语法

    为了让 Node.js 支持 ES6 的语法, 需要使用 Babel. 安装 es-checker 在使用 Babel 之前 , 我们先检测一下当前 node 对 es6 的支持情况. 在命令行下执行 ...

  9. JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)

    第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...

随机推荐

  1. Java学习:Debug调试程序

    Debug追踪 Debug调试程序: 可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug 使用方式: 在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里) 右键 ...

  2. Java学习:字符串概述与特点

    字符串概述与特点 java.lang.String类 代表字符串 API当中说:Java程序中的所有字符串字面值(如“abc“)都作为此类的实例实现.其实就是说:程序当中所用的双引号字符串,都是Str ...

  3. 如何通过 IntelliJ IDEA 来提升 Java8 Stream 的编码效率

    本文翻译整理自:https://winterbe.com/posts/2015/03/05/fixing-java-8-stream-gotchas-with-intellij-idea 作者:@Wi ...

  4. 关于VS2019使用Git时遇到的Bug

    最近在运行vs2017时老是卡死,神烦!迫于无奈我从微软官网下载了vs2019,安装后打开项目,发现从git上拉取代码时报错如下: Please make sure you have the corr ...

  5. C# Mysql数据库备份、还原(MVC)

    一.准备工作 1.电脑上要安装上mysql,并且已经配置好了环境变量. 二.公共代码 1.配置文件(该节点只是为备份.还原使用,数据库连接字符串有另外的节点) <connectionString ...

  6. prometheus被OOM杀死

    参考https://www-01.ibm.com/support/docview.wss?uid=ibm10882172 提升内存配置 2.5版本后新增--query.max-samples 这个参数 ...

  7. 智能制造进入下半场?APS如何进行优化

    按照现在算法和计算机处理能力的发展,现在资源优化的方向已经逐渐摒弃,而是在更系统的“有限产能计划的”框架内一并解决产能和物料的问题. 我们所看到的新近涌现出来的很多APS系统.但碍于算法的复杂程度,在 ...

  8. Linux CentOS7 安装FTP服务器

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_39680564/article/de ...

  9. Excel 逐条导入Mysql(数据更新)

    其实,我的业务流程是, 先读取excel/csv -> pandas 数据清洗 -> 导入Mysql, 一般是做一个表append 或者是 if exist -> replace的操 ...

  10. Servlet入门和HTTP。

    Servlet: 1.概念:Servlet:server applet  ,运行在服务器端的小程序.   浏览器在访问服务器的动态资源时,访问的是具有逻辑性的Java代码(Java类),而这里的Jav ...