ES6——块级作用域&&字符串扩展&&正则表达式

第1章 块级作用域绑定

let 声明

let代替var来声明变量,把变量的作用域限制在当前代码块中(临时死区Temporal Distortion)
注:let声明的变量不会出现提前声明的情况,所以尽量let声明在代码块的顶部,以便整个代码块都可以访问。

let 声明的特点

- 禁止重声明
- 具有块级作用域

循环中的块作用域绑定

在JS中var定义循环的变量  在循环的外层也可以访问到  但是let声明的就不行
for(let i = 0; i < 10; i++){

}
console.log(i);  //不能访问i!!!

const 声明

const用于声明常量,即一旦被设置后,就不能更改,且每一个const声明的变量都需要进行初始化

const声明对象

const声明的对象不能修改其引用,但是可以修改属性值
const obj = {
	name: 'wjc'
} 
obj.name = 'zfh';
obj = {		//这样不行会报语法错误 syntaxerro
	name: 'aaa'
}

const与let

const与let声明的都是块级标识符,即声明的变量只在当前代码块内有效
可以解决循环中函数调用的异步的问题(即实现同步)
var funcs = [];

for(let i =0; i < 10; i++){
	funcs.push(function(){
		console.log(i);	
	});
}

funcs.forEach(function(func){
	func()
})

循环中const与let的区别

需要注意的是const用于循环,只能使用for in循环,因为for in循环每次迭代不会修改已有绑定,而是创建一个新的绑定,如:
for(const key in arr){
	arr2.push(function(){
		console.log(key);		
	})
}

被用于全局块作用域时const、let与var的区别

var声明变量的时候会创建一个新的全局变量作为全局对象(window对象)的属性(即var很可能会覆盖一个已经存在的全局属性)
let或const在全局作用域中声明的变量,只会在全局作用域下创建一个新的绑定,但该绑定不会添加为全局对象的属性。(即不会覆盖全局变量,只会遮蔽它)
let RegExp = 'hello';
console.log(RegExp);
console.log(window.RegExp == RegExp);  //fale

const ncz = 'Hi!';
console.log(ncz);
console.log('ncz' in window);	//false

第2章 字符串和正则表达式

字符串的变更

includes()方法:在字符串中检测到指定文本则返回true

startsWith()方法:在字符串中的起始部分检测到指定文本则返回true,否则返回false

endsWith()方法:在字符串中的结束位置检测到指定文本则返回true,否则返回true

repeat()方法:其接收的是一个number类型的参数,表示该字符串的重复次数
	'hello'.repeat(3)
	这个方法在操作文本的时候非常实用
	//缩进指定数量的空格
	let indent = " ".repeat(4);
		indentLevel = 0;
	//当需要增加缩进的时候
    let newIndent = indent.repeat(++indentLevel);

正则表达式y修饰符

补充:RegExp.exec(String)  可以用于检索字符串正则表达式的匹配
用处不大,暂不扩展

模板字面量

多行字符串
基本字符串格式化
HTML转义

基础语法

let message =  `hello world!`
注:要使用反引号的话,需要使用\斜杠进行转义

多行字符串

JS中的解决方法
	var message = "Multiline \n\ 
	string"
ES6中简化的多行字符串
	let message = `Multipleline
	string`;

	console.log(message);

	console.log(message.length);
可以配合trim()一起使用
	let message = `
	<div>
		<h1>Title</h1>
	</div>
	`.trim();

字符串占位符

在模板字面量中,可以将任何合法的JavaScript表达式嵌套到占位符中将其作为字符串的一部分输出到结果中
占位符基本结构:${}  在{}中间可以放任意的JavaScript表达式

let name = "Nicholas",
	message = `Hello, ${name}`;

console.log(message);

标签模板(重点)

let message = tag`Hello world`
定义标签
标签可以是一个函数,调用时传入加工过的模板字面量各部分数据,但必须结合每个部分来创建结果。
基本结构:function tag(literals, ...substitutions){
			//返回一个字符串	
		}	
模板字面量标签会接收三个参数:
	literals数组:数组的第一个总是''空字符串	第二个是第一个字符串  第三个是第二个字符串
	substitutions: 数组的第一个参数是第一个占位符的值  第二个占位符的值	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值