关于ES6-{块级作用域 let const 解构赋值 数组 字符串 函数的扩展 箭头函数}
关于ES6
块级作用域
任何一对花括号({})中的语句集都属于一个块,在块中声明的变量在代码块外都是不可访问的,称之为块级作用域,ES5以前没有块级作用域
let
let 是ES6新增的声明变量的一种方法,与 var 最明显的区别是
不存在变量提升
产生新的作用域(块级作用域)
在一个作用域中 不允许重复声明
暂时性死区 在一个块级作用域的任何地方 声明过 就不会再访问外面的了
var c = 123;
if(true) {
console.log(c);
let c;
} // c is not defined 程序会报错 区别于var 它不会预解析 也不会向外找
const 关键字
1. const 用于声明常量(通常大家习惯将常量定义成大写),
2. 必须初始化
3. 而常量一旦赋值就不允许被更改,其他属性与let一样变量的解构赋值
按照某种模式,从数组和对象中提取值,对变量进行赋值这被称为解构。
数组的解构赋值
//1.左右对等 左侧对变量进行了声明 右侧是一个标准的数据类型(数组)
var [a, b, c] = [1, 2, 3];
console.log(a, b, c); // 1 2 3
//2. 左右两侧不对等
let [name, age] = ['小明', 16, '男'];
console.log(name, age); //小明 16
let [name, age, gender, home] = ['小明', 16, '男'];
console.log(name, age, gender, home); //小明 16 男 undefined
// 3. 允许嵌套
let [name, [age], gender] = ['小红', [16], '女'];
console.log(name, age, gender); //小红 16 女
// 4. rest 运算符
// ES6 新增了运算符 ...
let [a, b, c, ...d] = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(a); //1
console.log(b); //2
console.log(c); //3
console.log(d); //[4,5,6,7,8]对象的解构赋值
//1.左右对等 左侧对变量进行了声明 右侧是一个标准的数据类型(对象)
let {name: name1, age: age1} = {name: '小明', age: 16};
console.log(name1); //可以简写如下:
let {name, age} = {age: 16, name: '小明'};
console.log(name, age);
//注意:然后根据属性名来对应 没有顺序的要求
// 2.左右不对等
// let {name, age} = {name: '小明', age: 16, gender: '男'};
// let {name, age, gender, home} = {name: '小明', age: 16, gender: '男'};
// console.log(name, age, gender, home); //home 为 undefinded
// 3.也是支持嵌套
let {name, child: {childname}, age} = {
name: '小红',
age: 16,
child: {
childname: '小小红'
}
};
console.log(name, childname, age);
string的扩展
str.includes("i") //str是否包含 i 返回布尔
str.startsWith('my') //str 是不是以 my 开头的 布尔
str.endWith('my') //str 是不是以 my 结尾的 布尔
no.padStart(6, '0') //希望长度固定为 6 位,不够在开始位置 以 0 补充
no.padEnd(6, '0') //希望长度固定为 6 位,不够在结尾位置 以 0 补充
数组的扩展
Array.of方法创建数组
// 创建一个若干单元的数组
let users = new Array(1, 2, 3); //等价于 let users = [1, 2, 3]
let nums = new Array(3); // 创建一个长度为 3 的数组 存在歧义
// ES6 可以通过 Array.of 方法创建数组
let users = Array.of(1, 2, 3); //等价于 let users = [1, 2, 3]
let nums = Array.of(1); // 等价于 let users = [1] 没有歧义 统一了还提供了数组的检索功能 返回布尔
var courses = ['html', 'javascript', 'css'];
console.log(courses.includes('php')); //flase
console.log(courses.includes('html')); //true
在数组中检索第1个满足条件的项, 条件当成回调函数的返回值
var bs = [1, 3, 4, 7, 16];
var res = bs.find(function (item, key, arrs) {
// 第1个参数为数组单元值
// console.log(item);
// 第2个为索引值
// console.log(key);
// 第3个参数为数组本身
// console.log(arrs);
return val > 4;
});
// console.log(res); // 根据情况 这个函数执行了4次 满足条件 结束返回 7
同样:find 换为 findIndex 用法一样 返回索引- 一般函数的拓展
- 给函数添加默认参数
function foo(name="小明"){
console.log(name);
}
foo("小华") //"小华";
foo() //小明"" 不确定个数的参数传递 接收
function fn(...abc){
console.log(abc) //传入参数后 可以在函数中 通过 abc[0] abc[1] .... 分别拿到第一个 第二个 ...参数
} fn(1); //[1]fn(1,2); //[1,2]
- 给函数添加默认参数
箭头函数
// 以往定义函数的方式
function foo(a) {
return a;
}
var bar = function (b) {
return b;
}
// ES6 新增定义函数的方法
// () => {
// console.log('定义了一个函数');
// }
// 一个函数是由以下几部分构成
// a) 名称
// b) 参数
// c) 函数体
// d) 返回值
// let fn(函数名称) = (这里写参数) => {这里函数体,返回值可以写在这里}
let sayHi = (name) => {
console.log(`你好 ${name}`);
}
// sayHi('小虹');
// 还有一些特殊写法
// 比如 只有一个参数,可以省略 参数的括号
// let 名称 = 参数 => {}
// let sayHello = name => {
// console.log(`你好 ${name}`);
// }
// sayHello('小米');
// 比如 没有参数,只写空的括号
// let 名称 = () => {}
// 比如 函数体中只有一行逻辑,可以省略 函数体的括号
// let 名称 = () => console.log('只有一行逻辑')
// let sayHello = (name) => console.log(`你好 ${name}`);
// sayHello('小刚');
// 比如 只有一个参数和只有一行逻辑
// let sayHello = name => console.log(`你好 ${name}`);
// sayHello('小则');
// 如果只有一行逻辑,这个结果自动的返回
let getName = name => name;
let getName = (name) => {
return name;
}
let a = getName('诠诠');
console.log(a);
关于ES6-{块级作用域 let const 解构赋值 数组 字符串 函数的扩展 箭头函数}的更多相关文章
- ES6入门一:块级作用域(let&const)、spread展开、rest收集
let声明 const声明 块级作用域 spread/rest 一.let声明与块作用域 在ES6之前,JavaScript中的作用域基本单元就是function.现在有了let就可以创建任意块的声明 ...
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- ES6学习 第二章 变量的解构赋值
前言 该篇笔记是第二篇 变量的解构赋值. 这一章原文链接: 变量的解构赋值 解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构 ...
- (2)ES6解构赋值-数组篇
1.解构赋值-数组篇 //Destrcturing(解构) //ES5 /* var a = 1; var b = 2; var c = 3; */ //ES6 var [a,b,c] = [1,2, ...
- ES6 - 基础学习(3): 变量的解构赋值
解构赋值概述 1.解构赋值是对赋值运算符的扩展. 2.它是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值. 3.代码书写上显得简洁且易读,语义更加清晰明了:而且还方便获取复杂对象中的数据字 ...
- ES6——块级作用域
前面的话 过去,javascript缺乏块级作用域,var声明时的声明提升.属性变量等行为让人困惑.ES6的新语法可以帮助我们更好地控制作用域.本文将详细介绍ES6新引入的块级作用域绑定机制.let和 ...
- ES6块级作用域及新变量声明(let)
很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域.用var声明的变量具有变量提升(declaration hoist ...
- ES6块级作用域
块级作用域的优点 避免变量冲突,比如程序中加载了多个第三方库的时候,如果没有妥善地将内部私有函数或变量隐藏起来,就很容易引发变量冲突: 可以方便的进行模块管理: 利于内存回收:(块级作用域里声明的变量 ...
- ES6 块级作用域
作用域包括:全局作用域,函数作用域,块级作用域. 为什么要用块级作用域: 1.内层变量可能会覆盖外层变量. var name = "kevin"; function call() ...
随机推荐
- 『ACM C++』 Codeforces | 1066A - Points in Segments
大一生活真 特么 ”丰富多彩“ ,多彩到我要忙到哭泣,身为班长,很多班级的事情需要管理,也是,什么东西都得体验学一学,从学生会主席.团委团总支.社团社长都体验过一番了,现在差个班长也没试过,就来体验了 ...
- golang刷Leetcode系列 --- 实现strStr()
实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...
- 竞赛题解 - [CF 1080D]Olya and magical square
Olya and magical square - 竞赛题解 借鉴了一下神犇tly的博客QwQ(还是打一下广告) 终于弄懂了 Codeforces 传送门 『题目』(直接上翻译了) 给一个边长为 \( ...
- (Nagios)-check_openmanage[Dell]
Nagios->check_openmanage[Dell R7*] 2014年11月13日 下午 07:44 需求介绍: 透过Nagios监控Dell R7系列服务器硬件状态 环境信息: ...
- Linux磁盘管理和lvm
磁盘管理 硬盘接口和硬盘种类 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS ...
- go加密算法:非对称加密(一)--RSA
椭圆曲线加密__http://blog.51cto.com/11821908/2057726 // MyRas.go package main import ( "crypto/rand&q ...
- collections.ChainMap类合并字典或映射
## 使用update()方法或者ChainMap类合并字典或映射 # 使用update()方法合并 a = {'x': 1, 'z': 3} b = {'y': 2, 'z': 4} merged ...
- python的基本知识
1. python的简介 python的创始⼈人为吉多·范罗苏姆(Guido van Rossum).1989年年的圣诞节期间,吉多· 范罗苏姆为了了在阿姆斯特丹丹打发时间,决⼼心开发⼀个新的脚 ...
- Product Helper
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; /// <summary> /// 产品 ...
- 通过burpsuite替换cookie登录后台
通过burpsuite可以比较方便的替换http头部的cookie.useragent等字段,在获取到用户的cookie后实现登录.具体使用方法如下: 如替换cookie,可以写正则表达式^Cooki ...