字符串反转是面试中的经典问题之一,比如腾讯的一道常见考题:
将字符串"hello"反转输出为"olleh”
本文将通过这个简单问题,带你深入了解 JavaScript 字符串、数组、包装类等知识点,并逐步解析其背后的运行机制。
✨ 字符串反转的简洁写法
const reverseString = (str) => str.split('').reverse().join('');
console.log(reverseString('hello')); // 输出:'olleh'
拆解步骤:
-
str.split(''):将字符串拆成字符数组 -
.reverse():将字符数组反转 -
.join(''):再拼接成字符串 这是一种函数式编程风格,代码短小而优雅。
❓ 原始类型字符串能调用方法?
let a = "hello";
console.log(a.split('')); // ['h', 'e', 'l', 'l', 'o']
字符串是原始类型(Primitive),你可能会疑惑:
💬 为啥原始类型也能调用
.split().length等方法?
这是因为 JS 提供了包装类机制(Wrapper Objects) 。
🔍 包装类的“背后魔法”
let a = "abc";
let b = new String("abc");
console.log(a == b); // true:值相等
console.log(a === b); // false:类型不同
| 变量 | 类型 | 说明 |
|---|---|---|
a | 字符串 | 原始类型 |
b | 对象 | String 对象 |
背后发生了什么?
a.split('')
JS 实际执行流程:
- 临时将原始类型转为对象:
new String(a) - 执行对象方法:
.split() - 销毁临时对象,回归为原始类型
🔁 所以,JS 统一了原始类型与对象的操作方式。
🔧 函数写法的演进过程
✅ ES5:函数表达式
const reverseString = function(str) {
return str.split('').reverse().join('');
};
✅ ES6:箭头函数(Arrow Function)
const reverseString = (str) => str.split('').reverse().join('');
如果函数体只有一行,且返回一个值:
- 可以省略
function - 可以省略大括号
{} - 可以省略
return
这就是箭头函数语法糖的魅力!
💬 模板字符串(Template Literal)
ES6 还引入了模板字符串,更方便的拼接写法:
let str2 = "world";
const str4 = `hello ${str2}`;
console.log(str4); // 输出:hello world
对比传统写法:
"hello" + str2
模板字符串更直观、可读性更强。
✅ 总结:你学会了什么?
通过一个字符串反转的例子,我们了解了 JS 中非常重要的几个知识点:
- ✅ 字符串和数组的常用方法:
split()、reverse()、join() - ✅ 原始类型的“包装类”原理(自动封装成对象)
- ✅ 箭头函数的简写方式
- ✅ 模板字符串(Template Literal)
- ✅
==与===的区别
🙋♂️ 如果本文对你有帮助,欢迎点赞 👍 收藏 ⭐ 关注 🔔 支持一下~