字符串
字面量创建(基本字符串)
let str1 = '单引号', str2 = "双引号";
// javascript 字符串不区分单引号和双引号
// 长字符串写成多行的方式
let longStr1 = '11111111111111111111' +
'2222222222222222222222' +
'333333333333333333';
let longStr1 = '11111111111111111111\
2222222222222222222222\
333333333333333333';
// 注意:使用反斜杠字符(\)要确保反斜杠后面没有空格或任何除换行符之外的字符或缩进,否则反斜杠将不会工作。
console.log(longStr1 === longStr2) // true
// ES2015 新增模板字符串 里面可以使用变量
let str = `模板字符串`
let a = '变量';
console.log(`这是一个${a}`); // 输出: 这是一个变量
String 构造函数
String()
将其他值生成或转换成基本字符串
String() // '' 空字符串
String(1) // '1'
String('1') // '1'
String(true) // 'true'
String(null) // 'null'
String(undefined) // 'undefined'
String({}) // '[object Object]'
String([]) // ''
String([1,2]) // '1,2'
String(function(){}) // 'function(){}'
String() 和 toString() 区别
使用 String() 方法将其它对象转化为字符串可以被认为是一种更加安全的做法,虽然该方法底层使用的也是 toString() 方法,但是针对 null/undefined/symbols,String() 方法会有特殊的处理
String 构造函数原型上的toString方法覆盖了Object 构造函数原型上的 toString 方法;并没有继承 Object.toString()。对于 String 对象,toString 方法返回该对象的字符串形式,和 String.prototype.valueOf() 方法返回值一样。两者都不改变原String对象,返回一个字符串。
// toSting()可以把String对象转换成基本字符串 等同于ValueOf()
let str = new String('String对象');
str.toString(); // return 'String对象'
str.valueOf(); // return 'String对象'
''.toString(); // return ''
' '.toString(); // return ' '
'123'.toString(); // return '123'
[].toString(); // return ''
[1,2].toString(); // return '1,2'
true.toString(); // return 'true'
let obj = {};
obj.toString(); // return '[object Object]'
new String() 可以创建字符串对象
let commonStr = '基本字符串';
let objStr = new String('字符串对象');
console.log(commonStr); // '基本字符串'
console.log(objStr); // String {'字符串对象'}
console.log(typeof commonStr); // 'string'
console.log(typeof objStr); // 'object'
基本字符串和字符串对象的区别
| 字符串类型 | 创建方式 | 类型 | 使用eval()方法 | 转换方式 |
|---|---|---|---|---|
| 基本字符串 | 字面量创建和String方法( '' "" `` String()) | 字符串 | 将基本字符串作为源代码处理 | new String () |
| 字符串对象 | 构造函数创建( new String() ) | 对象 | 字符串对象则被看作对象处理, 返回对象 | valueOf () |
s1 = "2 + 2"; // creates a string primitive
s2 = new String("2 + 2"); // creates a String object
// eval函数会将传入的字符串当作js代码进行执行
console.log(eval(s1)); // returns the number 4
console.log(eval(s2)); // returns the object String {"2 + 2"}
console.log(typeof eval(s2)); // 'object'
// valueOf() 方法可以把字符串对象转换为其对应的基本字符串
console.log(s2.valueOf() === s1); // true
数字和字母对应的Unicode编码
| 0-9 | a-z | A-Z |
|---|---|---|
| 48-57 | 97-122 | 65-90 |
String.prototype 上的方法
charAt(index)
描述:从一个字符串中返回指定的字符
参数:index(介于0和字符串长度减一之间的整数),index默认为0
返回值:字符串
let str = 'abcd';
str.charAt(); // return 'a'
str.charAt(1); // return 'b'
str.charAt(5); // return '' 空字符串
// 或者把字符串当作类似数组的对象
str[1]; // return 'a'
str[5]; // return undefined
indexOf(searchValue[, fromIndex])
描述:检查某一字符串在父子符串中的位置
参数: indexOf()
let str = '12345';
str.indexOf(); // return -1
str.indexOf(''); // return 0
str.indexOf('1'); // return 0
str.indexOf('6'); // return -1