数据类型指的就是字面量的类型
JavaScript 中有八种基本的数据类型(前七种为基本数据类型,也称为原始类型,而 object 为复杂数据类型)。
-
number用于任何类型的数字:整数或浮点数,在
±(253-1)
范围内的整数。 -
bigint
用于任意长度的整数。 -
string
用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。 -
boolean
用于true
和false
。 -
null
用于未知的值 —— 只有一个null
值的独立类型。 -
undefined
用于未定义的值 —— 只有一个undefined
值的独立类型。 -
symbol
用于唯一的标识符。 -
object
用于更复杂的数据结构。
String字符串
1.引号
在JS中字符串需要使用引号引起来,同样的引号不能嵌套(双引号不能直接嵌套双引号)
在 JavaScript 中,有三种包含字符串的方式。
- 双引号:" Hello "
- 单引号:' Hello '
- 反引号:` Hello `
双引号和单引号都是简单引用,在 JavaScript 中两者几乎没有什么差别。
反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${...} 中,来将它们嵌入到字符串中。例如:
let name = "John";
// 嵌入一个变量
alert( `Hello, ${name}!` ); // Hello, John!
// 嵌入一个表达式
alert( `the result is ${1 + 2}` ); // the result is 3
${...} 内的表达式会被计算,计算结果会成为字符串的一部分。可以在 ${...} 内放置任何东西:变量,或者算数表达式,或者其他一些更复杂的内容。
另外,反引号允许字符串跨行:(单引号和双引号则不可以)
let nameList = `Names:
* Tom
* Tony
* Mary
`;
alert(nameList); // 多行的名单
2.转义字符
在字符串中我们可以使用 \ 作为转义字符,当表示一些特殊符号时可以使用 \ 进行转义
例如:
let nameList = "Names:\n Tom\n Tony\n Mary";
alert(nameList); // 一个多行的名单
符号 | 表示含义 |
\n | 换行 |
\r | 回车:不单独使用。Windows文本文件使用两个字符\r\n的组合来表示换行 |
\' , \" | 引号 |
\\ | 反斜线 |
\t | 制表符 |
\b, \f, \v | 退格、换页、垂直标签——为了兼容性,现在已经不使用 |
\xXX | 具有给定十六进制 Unicode XX 的 Unicode 字符,例如:'\x7A' 和 'z' 相同。 |
\uXXXX | 以 UTF-16 编码的十六进制代码 XXXX 的 unicode 字符,例如 \u00A9 —— 是版权符号 © 的 unicode。它必须正好是 4 个十六进制数字。 |
\u{X...XXXXXX} | 具有给定 UTF-32 编码的 unicode 符号。一些罕见的字符用两个 unicode 符号编码,占用 4 个字节。这样我们就可以插入长代码了。 |
3.字符串长度
length 属性表示字符串长度
举个例子:
alert( `My\n`.length ); // 3
\n 是一个单独的“特殊”字符,所以长度是3。
查看字符串长度可以调用 str.length 属性
4.访问字符
要获取在 pos 位置的一个字符,可以使用方括号 [ pos ] 或者调用 str.charAt(pos) 方法。第一个字符从零位置开始:
let str = `Hello`;
// 第一个字符
alert( str[0] ); // H
alert( str.charAt(0) ); // H
// 最后一个字符
alert( str[str.length - 1] ); // o
如果没有找到字符,[]返回 undefined,而 charAt 返回一个空字符串
另外,可以使用 for...of 遍历字符 :
for (let char of "Hello") {
console.log(char);
}
字符串中的单个字符是不可以被直接更改的!!!
5. 改变大小写
可以使用 toLowerCase() 和 toUpperCase() 的方法来改变大小写
举个例子:
alert( 'Interface'.toUpperCase() ); // INTERFACE
alert( 'Interface'.toLowerCase() ); // interface
也可以使字符串中的一个字符改变大小写
再举个例子:
alert( 'Interface'[0].toLowerCase() ); // 'i'
6.查找子字符串
(1).str.indexOf()
str.indexOf(substr,pos)
它从给定位置 pos 开始,在 str 中查找 substr,如果没有找到,则返回 -1,否则返回匹配成功的位置。
let str = 'Widget with id';
alert( str.indexOf('Widget') ); // 0,因为 'Widget' 一开始就被找到
alert( str.indexOf('widget') ); // -1,没有找到,检索是大小写敏感的
alert( str.indexOf("id") ); // 1,"id" 在位置 1 处(……idget 和 id)
可选的第二个参数 "pos" 允许我们从给定的起始位置开始检索。
例如,“id” 第一次出现的位置是 1。查询下一个存在位置时,我们从 2 开始检索:
let str = 'Widget with id';
alert( str.indexOf('id', 2) ) // 12
还有一个类似的方法 str.lastIndexOf(substr,pos) ,它从字符串的末尾开始搜索到开头。
它会以相反的顺序列出这些事件。
(2).includes、startsWith、endsWith
str.includes(substr,pos) 根据 str 中是否包含 substr 来返回 true/false。
如果需要检测匹配,但不需要它的位置,那么就可以选择这种方法
举个例子:
alert( "Widget with id".includes("Widget") ); // true
alert( "Hello".includes("Bye") ); // false
str.includes 的第二个可选参数是开始搜索的起始位置
再举个例子:
alert( "Midget".includes("id") ); // true
alert( "Midget".includes("id", 3) ); // false, 从位置 3 开始没有 "id"
方法 str.startsWith(substr) 和 str.endsWith(substr) 表示字符串是否以substr开头或结尾
再再举个例子:
alert( "Widget".startsWith("Wid") ); // true,"Widget" 以 "Wid" 开始
alert( "Widget".endsWith("get") ); // true,"Widget" 以 "get" 结束
7.获取子字符串
(1).str.slice(start [, end])
返回字符串从 start 到(但不包括)end 的部分
举个例子:
let str = "stringify";
alert( str.slice(0, 5) ); // 'strin',从 0 到 5 的子字符串(不包括 5)
alert( str.slice(0, 1) ); // 's',从 0 到 1,但不包括 1,所以只有在 0 处的字符
如果没有第二个参数,slice 会一直运行到字符串末尾:
let str = "stringify";
alert( str.slice(2) ); // 从第二个位置直到结束
start / end 也有可能是负值。它们的意思是起始位置从字符串结尾计算:
let str = "stringify";
// 从右边的第四个位置开始,在右边的第一个位置结束
alert( str.slice(-4, -1) ); // 'gif'
(2). str.substring(start [, end])
返回字符串在 start 和 end 之间的部分,与slice几乎相同,但它允许start大于end,而且不支持负的参数。
let str = "stringify";
// 这些对于 substring 是相同的
alert( str.substring(2, 6) ); // "ring"
alert( str.substring(6, 2) ); // "ring"
// ……但对 slice 是不同的:
alert( str.slice(2, 6) ); // "ring"(一样)
alert( str.slice(6, 2) ); // ""(空字符串)
(3).str.substr(start [, length])
返回字符串从 start 开始的给定 length 的部分。
与以前的方法相比,这个允许我们指定 length 而不是结束位置:
let str = "stringify";
alert( str.substr(2, 4) ); // 'ring',从位置 2 开始,获取 4 个字符
第一个参数可能是负数,从结尾算起:
let str = "stringify";
alert( str.substr(-4, 2) ); // 'gi',从第 4 位获取 2 个字符
两种字符串函数:
str.trim()
—— 删除字符串前后的空格 (“trims”)。str.repeat(n)
—— 重复字符串n
次。