深入浅出之JavaScript中的String

简介: 深入浅出之JavaScript中的String

String类型


String数据类型表示零或多个16位的Unicode字符序列。字符串可以使用双引号、单引号或者反引号

<script>
 let firstName = "John";
 let lastName = "Jacob";
 let lastName = `Jingleheimerschmidt`;
</script>


跟某些语言中使用不同的引号会改变字符串的解释方式不同,ECMAScript语法中表示字符串的引号没有区别。 不过要注意的是,以某种引号作为字符串开头,必须仍然以该种引号作为字符串结尾

<script>
 let firstName = 'Nicholas“;   // 语法错误:开头的结尾的引号必须是同一种
</script>
复制代码


字符字面量


字符串数据类型包括一些字符字面量,用于表示非打印字符或有其它用途的字符,如下表所示

字面量 含义
\n 换行
\t 制表
\b 退格
\r 回车
\f 换页
\ 反斜杠
' 在字符串以单引号标示时使用
" 在字符串以双引号标示时使用
` 在字符串以反引号标示时使用
\xnn 以十六进制编码nn表示的字符(其中n是十六进制数字0-F)
\unnn 以十六进制编码nnnn表示的字符(其中n是十六进制数字0-F)

这些字符字面量可以出现在字符串中的任意位置,且可以作为单个字符被解释

let text = "This is the letter sigma: \u03a3";

在这个例子中,即使包含6个字符长的转义序列,变量text仍然是28个字符长。因为转义序列表示一个字符

字符串的长度可以通过length获取

console.log(text.length);  // 28

这个属性返回字符串中的16位字符的个数


注意注意


如果字符串中包含双字节字符,那么length属性返回的值可能不是准确的字符数


字符串的特点


ECMAScript中的字符串是不可变的,意思是一旦创建,它们的值就不能变了。要修改某个变量中的字符串值,必须先销毁原始的字符串,然后将包含新值的另一个字符保存到该变量

let lang ="Java";
lang = lang + "JavaScript";

这里我们可以看到,变量lang一开始包含字符串Java。紧接着,lang被重新定义为包含Java和Script的组合,也就是JavaScript。整个过程中首先会分配一个足够容纳10个字符的空间,然后都填充上JavaScript。最后销毁的原始字符串Java和字符串Script。因为这两个字符串都没用了。所有处理都是在后台发生的,而这也是一些早期的浏览器在拼接字符串时候非常慢的原因,这些浏览器在后来的版本中都有针对性的解决了这些问题


转换为字符串


有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的toString()方法。这个方法唯一的用途就是返回当前值的字符串等价物

<script>
 let age = 11 ;
 let ageAsString = age.toString();         // 字符串“11”
 let found = true ;
 let foundAsString  = found.toString();    // 字符串“true”
</script>

toString() 方法可见于数值、布尔值、对象和字符串值。nullundefined值没有toString() 方法

多数情况下,toString() 不接收任何参数。不过,在对数值调用这个方法时,toString() 可以接收一个底数参数,即以什么底数来输出数值的字符串表示。默认情况下,toString() 返回数值的十进制字符串表示。而通过传入参数,可以得到数值的二进制、八进制、十六进制或者其它任何有效的技术的字符串表示

<script>
 let num = 10 ;
 console.log(num.toString());     // 10
 console.log(num.toString(2));    // 1010
 console.log(num.toString(8));    // 12
 console.log(num.toString(10));   // 10
 console.log(num.toString(16));   // a
</script>

这个例子在展示传入底数参数的时候,toString() 输出的字符串值也会随之改变,数值10可以输出位任意数值的格式。注意,默认情况下(不穿参数)的输出与传入参数10得到的结果相同

如果你不确定一个值是不是null或者undefined,可以使用String() 转型函数,它始终会反悔表示相应类型值的字符串。String() 函数遵循如下规则

  • 如果值有toString() 方法,则调用该方法(不穿参数)并且返回结果
  • 如果值是null,则返回null
  • 如果值是undefined,则返回undefined
<script>
let value1 = 10 ;
let value2 = true ;
let value3 = null ;
let value4 ;
console.log(String(value1));   // 10
console.log(String(value2));   // true
console.log(String(value3));   // null
console.log(String(value4));   // undefined
 </script>

这里展示了将4个值转换为字符串的情况:一个数值、一个布尔值、一个null和一个undefined。数值和布尔值的转换结果与调用toString()

相关文章
|
6月前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
62 2
|
12天前
|
JavaScript 前端开发 开发者
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
43 3
|
2月前
|
JavaScript 前端开发 Python
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
|
2月前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
38 2
|
3月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
2月前
|
JavaScript 前端开发
今天被JavaScript的String型和数字型的+运算撞了一下腰。
今天被JavaScript的String型和数字型的+运算撞了一下腰。
|
3月前
|
JavaScript 前端开发
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
这篇文章介绍了JavaScript中的数组、Date对象、Math对象以及包装类(String、Number、Boolean),并详细讲解了数组的创建、方法(如forEach、push、pop、unshift、slice、splice)和遍历操作,以及工厂方法创建对象和原型对象的概念。
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
|
5月前
|
JavaScript 前端开发 索引
JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型
【6月更文挑战第25天】JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型,而Object包括Array、Function等是引用类型。Objects可以包含键值对,Array是特殊的Object。Functions也是对象。`null`和`undefined`被视为特殊的原始值。
54 1
|
6月前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`&#39;1.2,2,3,4,5&#39;`)转换为对象数组。通过使用`split(&#39;,&#39;)`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
361 2