es6 入坑笔记(一)---let,const,解构,字符串模板
let
全面取代var
大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译
注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内
坑:for(let i =0;i < 10; i++){
let i=20;
}
这个例子存在父子作用域,即(){}各为一个作用域,所以i可以重复let
const
即静态变量值不允许改变,常用于声明为一个常量
坑:let arr=new array(1,2,3);
arr.push(4);//arr:1,2,3,4
因为数组为引用,引用的地址不能改变,但地址映射的数组内的值可以改变
要想完全不变则使用:object.freeze();
解构
es6最强大的功能之一,简而言之即左边的结构与右边的结构进行匹配,如果匹配成功则赋值给z左边
eg:
let a = 10,b = 20;
let [c,d] = [b,a];//c = 20,d = 10
//当做左边的与右边的不匹配则为undifine
let [e,f,g] =[b,a]//e=20,f=10,g:undefine
//左边可设默认值,当左边与右边的不匹配时使用默认值
let [h, i,j=100] = [b,a]//h=20,i=10,j=100
//对象赋值,同上,但可取别名,注意对象进行模式匹配时是按照键名进行匹配,不是循序匹配
let json = {
name:"zjj",
age:"20",
sex:"man"
};
let [name,aaaaa,age:Age]=json;//name="zjj" ,aaaaa = undifune, Age = "20"
坑:
1.解构时null视为一个正常值,当右边为null时左边匹配的默认值不会生效,只有当右边完全等于(===)undifine时默认值才会生效
2.解构时的默认值为惰性的,只有使用的才会求值
function f() { console.log('aaa'); }
let [x = f()] = [1];//不会打印出aaa
3.解构时右边的值必须为可以遍历的结构,例如数组,对象,set,map等,let [demo] = 10;//ERROR
4.
let x;
{x} = {x: 1};
上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。改为
let x;
({x} = {x: 1});
上面代码将整个解构赋值语句,放在一个圆括号里面,就可以正确执行
字符串模板
let name = "zjj",age = 15;
let str=`名字为:${name},年龄:${age}`;//str="名字为:zjj,年龄:15"
字符串使用`,拼接的内容使用${...}的形式
es6 入坑笔记(一)---let,const,解构,字符串模板的更多相关文章
- es6 入坑笔记(二)---函数扩展,箭头函数,扩展运算符...
函数扩展 1.函数可以有默认值 function demo( a = 10,b ){} 2.函数可以使用解构 function demo( { a = 0,b = 0 } = {} ){ } 3.函数 ...
- es6 入坑笔记(三)---数组,对象扩展
数组扩展 循环 arr.foreach(){ //回调函数 function(val,index,arr){ //val:当前读取到的数组的值,index:当前读取道德数组的索引,arr:当前的数组名 ...
- es6 入坑笔记(五)
Symbol 主要用做key或私有变量,Symbol是唯一的不可重复的,也是一个单独的数据类型 定义形式: let demo=Symbol("aaaa"); 1.Symbol不能使 ...
- es6 入坑笔记(四)---异步处理
promise 用于js的异步处理 形式: 1.申明一个promise的对象 let p = new Promise(function(成功时的参数,失败时的参数){ if(....){ 成功时的参数 ...
- react 入坑笔记(四) - React 事件绑定和传参
React 事件处理 建议:在了解 js 的 this 取值后食用更佳. 一.react 与 Html 中用法的异同和注意点 html 中的绑定事件的写法: <button onclick=&q ...
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- oracle入坑日记<三>用户详解(角色理解)
1 用户是什么 1.1.权限管理是Oracle的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种.如果把Oracl ...
- ES6笔记(3)-- 解构赋值
系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组.对象.字符串的解构赋值等 一.数组的解构赋值 function ids() { ret ...
- Linux探索之路1---CentOS入坑笔记整理
前言 上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练.特别是用户权限分配以及vi下的快捷操作.于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令. 作 ...
随机推荐
- 你真的了解Fragment的生命周期吗?
Android Framwork开发人员中的传奇人物Dianne Hackborn在2010年将Fragment引入了Android,也就是在android3.0之后引入Fragment,他在提交信息 ...
- IOC和AOP的个人理解
IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B. 所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B, ...
- 从golang-gin-realworld-example-app项目学写httpapi (二)
https://github.com/gothinkster/golang-gin-realworld-example-app/blob/master/users/models.go 模型定义 use ...
- .net core系列之《在.net core中使用MemoryCache实现本地缓存》
说到内存缓存MemoryCache不由的让我想起.Net Framework中的MemoryCache,它位于 System.Runtime.Caching 程序集中. 接下来我们来看看.net co ...
- Excel VBA开发
一.Excel添加treeview控件 如果是以VBA中为窗体添加,菜单:工具->附加控件,从中选择“Microsoft TreeView Control”: 在控件工具箱中点击其它控件,从中选 ...
- DAO层,Service层,Controller层、View层介绍
来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ...
- 软件磁盘阵列 (Software RAID)
什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,容错式廉价磁盘阵列. RAID 可以通过一些技术(软件或硬件),将多个较 ...
- 外部读取Excel的两种方法
1.使用Epplus读取 下载地址为https://epplus.codeplex.com/,下载文件后引用Epplus.dll文件. 这个类库读取Excel方便快捷,但是它只能读取.xlsx类型的文 ...
- MongoDB命令及其MongoTemplate的混合讲解
前言 前面讲解了如何在springboot中集成mongodb,本文将讲解mongodb命令操作及其MongoTemplate的使用.穿插的目的在于不用先去寻找mongodb的命令又去寻找在java中 ...
- 在IIS上发布网站后,在编译时出现CS0016拒绝访问错误
错误如下图所示: 关键性错误信息: 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Te ...