ES6 学习笔记(一)

ECMA Script 6

块级作用域

var声明与块级提升

var 不管是在函数作用域还是全局作用域,都会被当成当前作用域顶部声明的变量,会在预编译阶段被编译器提升到作用域顶部

function fun(){
    var val1;
    if (){}
}

等同于

function fun(){
    if (){var val1;}
}

块级声明

块级声明 可以看成 C中的局部作用域。
let 用于替代 var,来将变量限制在代码块内。
const所声明的常量变量跟let 一样,都是局部作用域内有效。
const与let都不会被提升,会严格按照变量声明顺序来进行。

重声明

都在同一作用域进行声明会出现重定义错误(var & let & const)

for(let i;;) 与 for(var i;;)的区别

区别在于循环结束后能否在循环外部继续访问。显而易见var 可以。
在没有let的情况下,以往都是使用IIFE (立即调用函数表达式)方法强制生成计数器副本。(funcs.push((function(value){} (i))))

let 循环,每次迭代循环都会创造一个新的变量i,并以之前的同名变量值来初始化。 等同于上面的IIFE。在for(obj in set)(可用const跟let)也是一样的。

字符串和正则表达式

Unicode与正则

正则表达式默认将字符串每一个字符按照16位编码单元处理。ES6定义了一个支持unicod的修饰符u。
eg:
let text = ‘吉’
console.log(/^.$/u.test(text)) => true,若去掉u则为false。
(但ES6可能没有在所有浏览器中都得到支持)

字符串变更

字串识别

includes(),包含指定文本,为true。
startsWith()开头匹配,为true。
endsWith()末尾匹配,为true。
这三个新方法需要传入字符串而非正则表达式。

传统的indexOf 与 lastIndexOf 都可以传入正则,并返回位置(若存在)。

REAPEAT方法

string.repeat(x),重复多少次此字符串。

正则表达式

let re1 = /ab/i, re2 = new RegExp(re1,’g’);

ES6中可行,re2将最后的参数i改为g。

RE.flags,可以获取RE的修饰符(最后一个/后面的字符)。re.source为前面的那些。

模板字面量

`context` => 所打即所得,包括空格&换行。

字符串占位符

let name = ‘Hello’, message = `Hello, ${name}`;

其输出为 Hello,Hello。

猜你喜欢

转载自blog.csdn.net/sunhaobo1996/article/details/80183182
今日推荐