3.3.1 字符串字面量
| |
| |
| var hzh = "hzh"; |
| console.log("hzh:" + hzh); |
| |
| var hzh = 'hzh'; |
| console.log("hzh:" + hzh); |

特殊字符可以通过转义字符(串)来表示。可以通过在转义符之后使用特定字符,来表达一些特殊的含义。转义符是反斜杠(\)。例如,\n 是换行符的表达方式。

| |
| |
| |
| |
| |
| var hzh1 = '我说"黄子涵是帅哥!"'; |
| console.log("hzh1 = " + hzh1); |

3.3.2 字符串型的运算
| |
| var hzh1 = '黄子涵'; |
| var hzh2 = hzh1; |
| console.log("hzh1:" + hzh1); |
| console.log("hzh2:" + hzh2); |
| console.log("**************************************************"); |
| |
| console.log("**************************************************"); |
| |
| var hzh3 = "黄子涵"; |
| var hzh4 = "是帅哥!" |
| var hzh5 = hzh3 + hzh4; |
| console.log("hzh3:" + hzh3); |
| console.log("hzh4:" + hzh4); |
| console.log("hzh5:" + hzh5); |
| console.log("**************************************************"); |
| |
| console.log("**************************************************"); |
| |
| var hzh6 = "黄子涵"; |
| hzh6 += "是靓仔!" |
| console.log("hzh6:" + hzh6); |
| console.log("**************************************************"); |
| |
| console.log("**************************************************"); |
| var hzh7 = "黄子涵"; |
| var hzh8 = hzh7; |
| hzh7 += "真厉害!" |
| console.log("hzh7:" + hzh7); |
| console.log("hzh8:" + hzh8); |
| console.log("**************************************************"); |
| |
| console.log("**************************************************"); |
| |
| console.log(typeof "黄子涵"); |
| |
| var hzh9 = "黄子涵"; |
| console.log(typeof hzh9); |
| console.log(typeof (hzh9)); |
| console.log(typeof (typeof (hzh9))); |

3.3.3 字符串型的比较
JavaScript 有两种等值运算符,即 ===
和 ==
。与之对应,也有两种不等运算符 !==
和 !=
。
=== 和 == 的区别在于,在比较的时候是否会进行数据类型的转换。=== 在比较的时候不会对数据类型进行转换。在ECMAScript 标准中,将其称为严格相等(strict equal)。
| |
| |
| var hzh1 = "黄子涵"; |
| var hzh2 = "是帅哥!"; |
| var hzh3 = hzh1 + "是帅哥!"; |
| console.log("hzh1 == hzh2?" + (hzh1 == hzh2)); |
| console.log("hzh1 == hzh3?" + (hzh1 == hzh3)); |
| console.log("hzh2 == hzh3?" + (hzh2 == hzh3)); |
| console.log("hzh1 != hzh2?" + (hzh1 != hzh2)); |
| console.log("hzh1 != hzh3?" + (hzh1 != hzh3)); |
| console.log("hzh2 != hzh3?" + (hzh2 != hzh3)); |
| console.log("**************************************************"); |
| |
| var hzh4 = "hzh"; |
| var hzh5 = "HZH"; |
| console.log("hzh4 < hzh5?" + (hzh4 < hzh5)); |
| console.log("hzh4 <= hzh5?" + (hzh4 <= hzh5)); |
| console.log("hzh4 > hzh5?" + (hzh4 > hzh5)); |
| console.log("hzh4 >= hzh5?" + (hzh4 >= hzh5)); |

下面是比较大小时 Unicode 的编码位置的一些典型情况。要深入理解这部分的内容,需要有 Unicode 的相关知识,不过只要能记住以下的情况,就多少能进行运用了。
- 英文字母是字典顺序(ABC 顺序)
- 英文的大写字母在小写字母之前
- 数字和符号在英文字母之前(不过有些符号是在英文字母之后的)
- 日文的平假名在片假名之前
- 日文的平假名和片假名都是字典顺序(あいうえお顺序)
- 日文浊音和半浊音的顺序则是按以下的规律排列:へ、ほ、ぼ、ぽ、ま
- 日文汉字在平假名和片假名之后
- 日文汉字的排列顺序视计算机的具体情况而定(有些是按照音读的字典顺序)
在实际中,只有英语单词
3.3.4 字符串类(String 类)
之前提到,在 JavaScript 中字符串型是一种内建类型。不过 JavaScript 的字符串也有容易使人混淆的地方,即除了内建类型的字符串之外还存在一个字符串类。
字符串类的名称为 String。JavaScript 中字符串型和 String 类的关系,大致相当于 Java 中数值型和包装类型(Number 类和 Integer 类)的关系。字符串型和 String 类之间也同样支持隐式类型转换。在 Java 中存在装箱和拆箱转换,在 JavaScript 的字符串型和 String 类之间也有着类似的转换。这一转换通常是隐式进行的。
| var hzh1 = '黄子涵是帅哥!' |
| |
| console.log("数组hzh1的长度:" + hzh1.length); |
| |
| console.log("'黄子涵是帅哥!'的长度:" + '黄子涵是帅哥!'.length); |
| |

3.3.5 字符串对象
| |
| var hzh1 = new String('黄子涵'); |
| console.log("输出hzh1:" + hzh1); |
| console.log("hzh1的类型:" + (typeof hzh1)); |
| console.log("*****************************************"); |
| |
| |
| var hzh2 = hzh1 + '是帅哥!'; |
| console.log("输出hzh2:" + hzh2); |
| console.log("hzh2的类型:" + (typeof hzh2)); |
| console.log("*****************************************"); |
| |
| |
| var hzh3 = new String('黄子涵'); |
| var hzh4 = new String('黄子涵'); |
| |
| console.log("判断hzh3和hzh4是否相等:"); |
| console.log(hzh3 == hzh4); |
| |
| console.log("判断hzh3和hzh4是否严格相等:"); |
| console.log(hzh3 === hzh4); |
| console.log("*****************************************"); |
| |
| |
| |
| var hzh5 = new String('黄子涵是帅哥!'); |
| var hzh6 = '黄子涵是帅哥!'; |
| |
| console.log("判断hzh5和hzh6是否相等:"); |
| console.log(hzh5 == hzh6); |
| |
| console.log("判断hzh5和hzh6是否严格相等:"); |
| console.log(hzh5 === hzh6); |
| |
| |

3.3.6 避免混用字符串值和字符串对象
| |
| |
| var hzh1 = new String('黄子涵是帅哥!'); |
| console.log("判断hzh1的数据类型:"); |
| console.log(typeof hzh1); |
| console.log("*********************************************"); |
| |
| |
| |
| |
| |
| |
| var hzh2 = '黄子涵是帅哥!' |
| console.log("返回字符串值下标为1的字符:"); |
| console.log(hzh2.charAt(1)); |
| console.log("对于字符串字面量也能像这样进行方法调用:"); |
| console.log('黄子涵是帅哥!'.charAt(1)); |

3.3.7 调用 String 函数
| |
| |
| var hzh1 = String('黄子涵是帅哥!'); |
| |
| console.log("判断hzh1的数据类型:"); |
| console.log(typeof hzh1); |
| |
| var hzh2 = String(47); |
| console.log("输出hzh2的值:"); |
| console.log(hzh2); |
| |
| console.log("判断变量hzh2的数据类型:"); |
| console.log(typeof hzh2); |

3.3.8 String 类的功能
String 类的函数以及构造函数调用

String 类的属性

String.prototype 对象所具有的属性

String 类的实例属性

| |
| |
| var hzh1 = new String('黄子涵'); |
| console.log("输出下标1的字符:"); |
| console.log(hzh1[1]); |
| |
| |
| console.log("字符串值'黄子涵'下标为2的字符:"); |
| console.log('黄子涵'[2]); |

3.3.9 非破坏性的方法
| |
| |
| |
| var hzh1 = new String('hzh'); |
| |
| var hzh2 = hzh1.toUpperCase(); |
| |
| console.log("输出hzh1的值:"); |
| console.log(hzh1); |
| console.log("输出hzh2的值:"); |
| console.log(hzh2); |
| |
| hzh1[0] = 'HZH'; |
| console.log("输出hzh1的值:"); |
| console.log(hzh1); |
| |
| |
| |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?