ECMAScript6的解构赋值,正则,字符串
发布日期:2021-05-18 06:11:25 浏览次数:20 分类:精选文章

本文共 2482 字,大约阅读时间需要 8 分钟。

2. 解构赋值

解构赋值是一种强大的特性,可以用来简化对象和数组的处理。在 JavaScript 中,解构赋值可以应用于数组和对象,非常适合将多个值分配给变量。

数组解构赋值

let a, b, rest;
[a, b] = [1, 2];
log(a, b); // 输出: 1 2

如果数组右边的元素比左边少,可以用 ...rest 来捕获剩余的元素:

let a, b, rest;
[a, b, ...rest] = [1, 2, 3, 4, 5, 6];
log(a, b, rest); // 输出: 1 2 [3, 4, 5, 6]

对象解构赋值

let a, b;
({ a, b } = { a: 1, b: 2 });
log(a, b); // 输出: 1 2

如果需要赋值并重命名,可以使用 = 运算符:

let a, b, c, rest;
[a, b, c] = [1, 2];
log(a, b, c); // 输出: 1 2 undefined

交换变量值

let a = 1;
let b = 2;
[a, b] = [b, a];
log(a, b); // 输出: 2 1

函数返回的多个值

function f() {
return [3, 4];
}
let a, b;
[a, b] = f();
log(a, b); // 输出: 3 4

如果函数返回多个值且数量不确定,可以使用 ... 运算符:

function f() {
return [1, 2, 3, 4, 5];
}
let a, b, c;
[a, , , b] = f();
log(a, b); // 输出: 1 4

3. 正则扩展

正则表达式(Regular Expression)是 JavaScript 中用于匹配字符串的工具,通过不同的修饰符可以实现更复杂的匹配。

正则表达式的基本用法

const { log } = console;
let regex1 = new RegExp('xyz', 'i');
let regex2 = new RegExp(/xyz/i);
log(regex1.test('xyz123'), regex2.test('xyz123')); // 输出: true true

Unicode 和 全局匹配

let regex3 = new RegExp(/xyz/ig, 'i');
log(regex3.flags); // 输出: 'i'
{
let s = 'bbb_bb_b';
let a1 = /b+/g;
let a2 = /b+/y;
log('one', a1.exec(s), a2.exec(s)); // 输出: 'bbb' 'bbb'
log('two', a1.exec(s), a2.exec(s)); // 输出: null null
}
log('粘连模式', a1.sticky, a2.sticky); // 输出: true true

Unicode 转义

log('u-1', /^\uD83D/.test('\uD83D\uDC2A')); // 输出: true
log('u-2', /^\uD83D/u.test('\uD83D\uDC2A')); // 输出: false
log(/\u{61}/.test('a')); // 输出: false
log(/\u{61}/u.test('a')); // 输出: true

4. 字符串扩展

JavaScript 的字符串处理功能在 ES6 中得到了显著提升,尤其是在处理 Unicode 字符和新特性上的进步。

Unicode 字符处理

const { log } = console;
log('a', `\u0061`); // 输出: a
log('s', `\u20BB7`); // 输出: s
log('s', `\u{20BB7}`); // 输出: s
{
let s = '𠮷';
log('length', s.length); // 输出: 2
log('0', s.charAt(0)); // 输出: 𠮷
log('1', s.charAt(1)); // 输出: undefined
}

字符串的遍历器接口

{
let s = '\u{20BB7}abc';
for (let i = 0; i < s.length; i++) {
log('es5', s[i]); // 输出: 𠮷
}
for (let code of s) {
log('es6', code); // 输出: 𠮷 a b c
}
}

标签模板字符串

{
let name = "list";
let info = "hello world";
let m = `I am ${name}, ${info}`;
log(m); // 输出: I am list, hello world
}

字符串操作

{
let str = "string";
log('includes', str.includes("r")); // 输出: true
log('start', str.startsWith('str')); // 输出: true
log('start', str.endsWith('ng')); // 输出: true
log('repeat', str.repeat(2)); // 输出: stringstring
}

Unicode 转义的改进

{
log(String.fromCharCode("0x20BB7")); // 输出: 𠮷
log(String.fromCodePoint("0x20BB7")); // 输出: 𠮷
}
上一篇:ECMAScript的数值,数组,函数,对象
下一篇:PhotoshopCC2019改变证件照的底色---超实用的两种方法

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月21日 02时31分17秒