(数据类型-字符串)JavaScript权威指南笔记5.1

来源:互联网 发布:用sql语句查询年龄在 编辑:程序博客网 时间:2024/05/17 23:20

字符串的创建

使用直接量创建字符串
var s = “Hello! String!”;

使用类创建字符串对象
var s2 = new String(“From String function of Class!”);

先来看一段代码以便说明问题:

var s = "Hello! String";var s1 = new String("From  String function of Class!");document.write("s type is [" + typeof s + "]<br/>");document.write("s1 type is [" + typeof s1 + "]<br/>");document.write(s + "<br/>" + s1 + "<br/>");document.write('s.search("H") is' + s.search("H") + "<br/>");document.write('s1.search("F") is' + s1.search("F") + "<br/>");

String.search(“F”) 此方法意思为寻找字符串s中“F”的在字符串中的位置,起始为0,最后一个为n-1。

运行的结果:

s type is [string]
s1 type is [object]
Hello! String
From String function of Class!
s.search(“H”) is 0
s1.search(“F”) is 0

使用直接量创建和new创建字符串对象的区别
1. 直接量生成的是一个字符串 类型为String,使用运算符new生成的是一个object对象。
2. 存储的空间不一样。以上面代码为例说明s和s1,s1为String实例化对象,存储的内容是方法和属性。直接量s存储的内容是字符串。对象s1运行代码s1.search(“F”),直接调用了实例化对象s1的方法。直接量s运行s.search(“H”),则临时生成一个String对象,运行完代码后立即释放该临时对象。

单双引号的麻烦和转义序列

提出问题:
1. 双引号里可以包含双引号吗?例:”(“double in double”)“
2. 双引号里可以包含单引号吗?例:”(’single in double‘)“
3. 单引号里可以包含单引号吗?例:‘(’single in single‘)’
4. 单引号里可以包含双引号吗?例:‘(’double in single‘)’
5. 英文的撇和单引号有区别吗?
6. 转义序列的作用是什么?

代码验证:

//document.write("1.双引号里可以包含双引号吗?例:("double in double")" + "<br/>");document.write("2.双引号里可以包含单引号吗?例:('single in double')" + "<br/>");//document.write('3.单引号里可以包含单引号吗?例:('single in single')' + "<br/>");document.write('4.单引号里可以包含双引号吗?例:("double in single")' + "<br/>");document.write(" \u0022 double quote's 'unicode' \u0022 ");

验证结果:
第1,3两个问题显示语法错误,加注释。
英文的撇和单引号无区别。

解决方案:

document.write("1.双引号里可以包含双引号吗?例:(\"double in double\")" + "<br/>");document.write('3.单引号里可以包含单引号吗?例:(\'single in single\')' + "<br/>");

使用转义序列(escape sequence)来实现问题1和3,即使用反斜杠”\”+单引号或双引号,或者”\u”+单引号或双引号的unicode码。

得出结论:
1. 双引号中不能直接包含双引号,单引号中不能直接包含单引号。
2. 双引号中可以包含单引号,单引号中可以包含双引号。
3. 若单引号中有单引号或双引号中有双引号均使用转义序列实现。
4. 转义序列是用来显示特殊字符的办法。转义序列在应用过程中还有一个用处。若使用的文本编辑器不支持完整的Unicode字符集是,就使用可以采用转义序列来实现兼容。

这里写图片描述

字符串定义和字符集

字符串定义
字符串就是由单引号或双引号括起来的Unicode字符序列。其中可以是0个或多个Unicode字符。关于Unicode字符集参考请点击这里。

需要注意的问题
字符串直接量必须写在一行中,若将分开放两行,可能会截断。因为回车为两行解释器会解释为两个命令语句行。若想显示多行文字,可在字符串中加换行的转义序列 “\n”。

在document.write("...")中的字符串需要换行则添加"<br/>"

javascript版本对字符集的支持
ECMAScript v1标准允许字符串直接量使用Unicode字符。
Javascript 1.3 之前的版本字符串不支持Unicode字符也不支持转义负号,通常只支持ASCII字符和Latin-1字符。
ECMAScript v3不支持反斜杠负号加八进制数字来表示Latin-1字符。

0 0
原创粉丝点击