深入浅出之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()

相关文章
|
18天前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
21 2
|
8天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`&#39;1.2,2,3,4,5&#39;`)转换为对象数组。通过使用`split(&#39;,&#39;)`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
27天前
|
SQL JavaScript
js开发:请解释什么是ES6的模板字符串(template string),并给出一个示例。
ES6的模板字符串以反引号包围,支持变量和表达式插入以及多行书写。例如,插入变量值`Hello, ${name}!`,计算表达式`${num1 + num2}`,以及创建多行字符串。模板字符串保留原始空格和缩进,简化了字符串拼接,提高了代码可读性。
18 6
|
1月前
|
JavaScript 前端开发 Java
javascript中的String
javascript中的String
|
1月前
|
JavaScript 前端开发 索引
编程笔记 html5&css&js 067 JavaScript String数据类型
编程笔记 html5&css&js 067 JavaScript String数据类型
|
3月前
|
前端开发 JavaScript 算法
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
|
3月前
|
前端开发 JavaScript 索引
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
|
3月前
|
存储 前端开发 JavaScript
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
|
4月前
|
JavaScript 前端开发
JavaScript基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。
JavaScript基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。
29 0
|
4月前
|
JavaScript 前端开发
js基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。具体案例使用演示
js基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。具体案例使用演示
34 1