JavaScript高级之ES6

2023-05-16

JavaScript高级之ES6

let

  • 变量不能重复声明(var 可以)
  • 块级作用域(var不是)
  • 不存在变量提升(var存在变量提升,能在声明之前使用变量(undefined))
  • 不影响作用域链

const

声明常量

  • 一定要赋初始值
  • 变量名一般使用大写
  • 常量的值不能修改
  • 块级作用域
  • 对数组和对象里的元素修改,不算对常量的修改(常量指向的地址没有发生变化),不会报错

变量的解构赋值

  1. 数组的解构

    const F4 = ['A', 'B', 'C', 'C']
    let [a, b, c, d] = F4
    
  2. 对象的解构

    const zhao = {
    	name: '赵本山',
    	age: '不详',
    	xiaopin: function() {
    		console.log("我可以演小品");
    	}
    };
    let {name, age, xiaopin} = zhao;
    

模板字符串

  1. 声明

    let str = `我也是字符串哦`;
    console.log(str, typeof str);
    
  2. 内容中可以直接出现换行符

    let str = `<ul>
                    <li>aaa</li>
                </ul>`
    
  3. 变量拼接

    let lovest = '胡歌';
    let out = `${lovest}是我最喜欢的演员!`;
    

对象的简化方法

允许直接写入变量和和函数,作为对象的属性和方法

let name = 'zhangsan'
let change = function() {
	console.log("change");
}
const school = {
	name,
	change
}

箭头函数及声明特点

let fn1 = function(a, b) {
	return a + b;
}
let fn2 = (a, b) => {
	return a + b;
}
  • this是静态的,始终指向函数声明时所在的作用域下的this值

  • 不能作为构造函数去实例化对象

  • 不能使用arguments变量

  • 箭头函数的简写

    • 省略小括号,当且仅当形参只有一个的时候

      let add1 = (n) => {
      	return n + n;
      }
      let add2 = n => {
      	return n + n;
      }
      
    • 省略花括号,当代码体只有一条语句的时候,同时省略return

      let pow1 = (n) => {
      	return n*n;
      };
      let pow2 = (n) => n*n;
      let pow3 = n => n*n;
      
  • 箭头函数应用

    <div id="app"></div>
    <script>
        let app = document.getElementById("app");
        app.addEventListener("click", function(){
            setTimeOut(() => {
                this.style.background = 'pink'
            }, 2000);
        });
    </script>
    
    const arr = [1, 2, 3, 4, 5, 6]
    const result = arr.filter(item => item % 2 == 0)
    

函数参数的默认值设置

  • ES6允许给函数参数赋初始值,一般具有默认值的参数位置靠后

    function add(a, b, c = 10) {
    	return a + b + c;
    }
    
  • 与解构赋值结合

    function connect({host = "127.0.0.0", username, password, port}) {
    	console.log(host)
    	console.log(username)
    	console.log(password)
    	console.log(port)
    }
    connect({
    	username: 'huaozhi',
    	password: 'password',
    	port: '8080'
    })
    

rest参数

ES6引入rest参数,用于获取函数的实参,用来代替arguments

  • ES5获取实参的方式

    function data() {
    	console.log(arguments); // 打印对象
    }
    data('a', 'b');
    
  • ES6 rest参数

    function data(...args) {
    	console.log(args); // 打印数组
    }
    data('a', 'b'); 
    

    rest参数必须放到参数最后

    function data(a, b, ...args) {
    	console.log(a);
    	console.log(b);
    	console.log(args); // 打印数组
    }
    data(1, 2, 3, 4);
    

扩展运算符

扩展运算符能够将数组转换为逗号分隔的参数序列

const tfboys = ['a', 'v', 'd', 'w'];
function chunwan() {
	console.log(arguments);
}
chunwan(...tfboys) // chunwan('a', 'v', 'd', 'w')

扩展运算符的应用

// 1.数组合并
arr1 = [1,2]
arr2 = [3,4]
arr3 = [...arr1, ...arr2] // [1,2,3,4]

// 2.数组克隆
arr4 = [...arr1] //浅拷贝(引用类型)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript高级之ES6 的相关文章

随机推荐

  • TT数鸭子

    题目描述 这一天 xff0c TT因为疫情在家憋得难受 xff0c 在云吸猫一小时后 xff0c TT决定去附近自家的山头游玩 TT来到一个小湖边 xff0c 看到了许多在湖边嬉戏的鸭子 xff0c TT顿生羡慕 此时他发现每一只鸭子都不
  • 中级软件设计师备考---软件工程2

    目录 软件测试分类和要求 测试用例设计 测试阶段 McCabe复杂度 软件维护 软件过程改进 CMMI CMM英文版 CMM中文版 CMMI 软件测试分类和要求 分类 灰盒测试 多用于集成测试阶段 不仅关注输出 输入的正确性 同时也关注程序
  • 数据库复习——第三章

    3 1 SQL概述 SQL支持关系数据库三级模式结构 SQL语言的功能 SQL功能动词数据查询SELECT数据定义CREATE DROP ALTER数据操纵INSERT UPDATE DELETE数据控制GRANT REVOKE Drop
  • 【ubuntu】ubuntu 安装软件的时候,执行add-apt-repository失败,update-ca-certificates

    在使用 ubuntu18 安装GCC 10 0的时候 xff0c 需要先执行add apt repository xff0c 结果报错了ERROR ubuntu toolchain r user or team does not exist
  • SQL语句练习(Student,Course,SC表)

    Create table Student 主码 xff0c 姓名 xff08 唯一 xff09 xff0c 性别 xff08 男 女 xff09 xff0c 年龄 xff08 18 25 xff09 span class token key
  • b站视频排行榜爬取

    bilibili排行榜爬取 众所周知 xff0c B站学习软件 哈哈哈哈 xff0c 今天我们就爬取B站的排行榜 废话不多说了 xff0c 直接开始了 分析 xff1a 我们看图一可以发现每个是视频的info都在li的标签里 xff0c 我
  • STM32F103笔记(二)——GPIO原理

    GPIO的工作原理与两个实验实例 一 STM32F103 GPIO说明1 stm32 GPIO引脚的主要功能2 GPIO相关配置寄存器的简介3 STM32F103 GPIO的8种工作方式4种输入模式4种输出模式 二 点亮LED实例 xff0
  • WSL2使用xrdp实现Liunx图形化桌面

    由于使用wsl跑代码时需要 pyplot 把数据可视化一下 xff0c 但是发现 import matplotlib pyplot as plt other code plt show 在 plt show 之后并没有图像被画出来 xff0
  • CentOS 8 安装图形界面GUI

    在安装CentOS8的桌面之前 xff0c 需要确保两点已做 xff1a xff08 1 xff09 在安装的时候 xff0c 勾选了安装Centos的GUI xff1b xff08 2 xff09 确保网络是联通的 xff0c ping一
  • 基于深度学习的目标跟踪的方法与实现 1、实现基于深度学习的目标跟踪方法 2、yolo v5目标检测模型预训练 3、行人检测模型

    摘要 目标检测支持许多视觉任务 如实例分割 姿态估计 跟踪和动作识别 这些计算机视觉任务在监控 自动驾驶和视觉答疑等领域有着广泛的应用 随着这种广泛的实际应用 目标检测自然成为一个活跃的研究领域 目标检测是一种计算机视觉技术 它允许我们识别
  • Mybatis-Plus代码生成器详解及完整代码实现

    意义 1 日常开发过程中 xff0c 常规后端开发接收到需求后 xff0c 进行数据库E R设计后创建对应数据表 无论基于speingmvc还是strtus xff08 同样是一个mvc框架 xff09 xff0c 都需要进行一些固定模板的
  • 根据二叉树的后序和中序遍历输出先序遍历

    7 8 根据后序和中序遍历输出先序遍历 20分 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果 xff0c 输出该树的先序遍历结果 输入格式 第一行给出正整数N 30 xff0c 是树中结点的个数 随后两行 xff0c 每行给出N个整
  • 7-7 修理牧场 (25分)嗯嗯

    农夫要修理牧场的一段栅栏 xff0c 他测量了栅栏 xff0c 发现需要N块木头 xff0c 每块木头长度为整数Li 个长度单位 xff0c 于是他购买了一条很长的 能锯成N块的木头 xff0c 即该木头的长度是Li 的总和 但是农夫自己没
  • 7-9 二叉树的层次遍历 (25分)

    编写程序 xff0c 要求实现 xff08 1 xff09 按先序遍历序列建立二叉树的二叉链表 xff1b xff08 2 xff09 按层次遍历二叉树 构成二叉链表的结点类代码如下 xff1a span class token keywo
  • 转行成为数据分析师的经验分享

    我的转行经历 我毕业于上海立信会计学院毕业的税务专业 xff0c 刚刚毕业的时候还是一枚小财务 xff0c 后来工作中 xff0c 身为财务 xff0c 需要和业务各种斗 xff08 si xff09 智 xff08 bi xff09 斗
  • 用Java的swing组件写出简单计算器

    做出来的效果是可以退格 xff0c 简单计算 xff0c 然后不合理的输入会不理会 xff0c 同时实时更新计算 代码如下 xff0c 试了一晚上 xff0c 头秃 代码看起来很多 xff0c 就是因为光暴力塑造ationPerformed
  • 堆排序(小根堆)C语言实现

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 决策树之Windows操作系统下graphviz库的安装与中文显示问题的解决

    文章复制于我的知乎 一 graphviz的安装 点击下载官网进入如下界面 xff0c 点击红框中的下载链接 xff0c 下载完成后双击文件运行 到这一步选择配置环境变量 安装完毕后 在命令行窗口输入pip install graphviz
  • 15. 三数之和

    span class token keyword class span span class token class name Solution span span class token punctuation span span cla
  • JavaScript高级之ES6

    JavaScript高级之ES6 let 变量不能重复声明 xff08 var 可以 xff09 块级作用域 xff08 var不是 xff09 不存在变量提升 xff08 var存在变量提升 xff0c 能在声明之前使用变量 xff08