一、书写语法
- 字符串由零个或多个16位Unicode字符序列组成
- 字符串必须包含在引号里,单引号
'
、双引号"
或者反引号` - 必须以相同的引号开始和结束
二、字符字面量
1、字面量的分类
- 键盘上有或者通过输入法可以直接输入的字面量
- 键盘上有但是有特殊含义的字面量
- 键盘上没有很难输入的字面量
2、直接输入的字面量
- 当需要给一个变量赋值可以直接输入的字面量是最简单的,按照字符串的书写语法,直接赋值即可
3、有特殊含义的字面量
- 反斜杠
\
、单引号'
、双引号"
、反引号 ` - 后面三个是字符串赋值的语法符号,而反斜杠是作为特殊含义字面量的转义赋值
- 当需要给变量赋值有特殊含义的字面量时可以通过转义字符反斜杠\
var backslash='\\';
- 还有一种方式可以给变量赋值特殊含义的字符,就是下面的方法
4、键盘上很难输入的字面量
- 字符串中的字符是Unicode码,那么就可以直接使用Unicode码
- 因为Unicode码太多且不容易记,所以这种方法虽然可行,但是很少使用;没有更好的方式时候可以用Unicode码
三、模板字面量
- 使用反引号包括字符串
- 保留换行符
- 保留空格
- 可以使用字符串插值${函数/变量名/方法}
- 场景:定义模板
三、基本数据类型转换为字符串
- 作用:将变量的值转为字符串
- 有如下三种方法
1、调用变量的toString()方法
- 布尔值:转为"true"/“false”
- 数值:转为对应的字符串"数值"
- null和undefined没有toString()方法,会抛异常
2、使用函数String()转化变量
- 布尔值:调用变量的toString()方法转为"true"/“false”
- 数值:调用变量的toString()方法转为对应的字符串"数值"
- null:转为"null"
- undefined:转为"undefined"
3、字符串拼接符+
- 从左至右依次执行
- 遇到两个数字会优先执行数值的+而不是字符串的拼接
4、总结
- toString()不能处理null和undefined
- String()能处理所有类型,当变量有toString()方法时,优先调用变量的toString()方法;变量没有toString()方法时转为null或者undefined
- +能处理所有类型;遇到两个数字时优先执行数学运算符+,而不是字符串拼接符+
四、代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据类型</title>
<script>
console.log("===========直接赋值");
var str = "hello, world";
console.log(str);
console.log("===========使用转义字符");
console.log("\\");//使用转义字符 反斜杠
console.log("\"");//使用转义字符 双引号
console.log("\'");//使用转义字符 单引号
console.log("===========使用Unicode码");
console.log("\u03a3");//Σ
console.log("\u005c");//使用Unicode码 反斜杠
console.log("\u0022");//使用Unicode码 双引号
console.log("\u0027");//使用Unicode码 单引号
console.log("===========模板字面量");
var str1 = `hello
world`
console.log(str1);
var str2 = "hello\nworld"
console.log(str2);
console.log(str1 == str2);//true
var str3 = `hello
world`;//注意world前面的空格会被保留
console.log(str3);
console.log(str1 == str3);//false
var html = `
<a href="#">
<span>不会变形</span>
</a>
`;
console.log(html);
console.log("===========字符串插值");
//`xxx${变量名或者调用函数或方法}xxx`等价于:'xxx'+变量名或者调用函数或方法+'xxxx';使用未赋值或者未声明的变量会出现undefined或者报错的问题
var name = prompt("请输入您的名字");
var strin = `恭喜??${name} 已经掌握了字符串插值的技能`;
console.log(strin);//${name}会被解析为name的值
var name2;
var strin2 = `恭喜??${name2} 已经掌握了字符串插值的技能`
console.log(strin2);//name2=undefined
console.log(`恭喜??${name.toUpperCase()} 已经掌握了字符串插值的技能`);//还可以使用函数或者方法
console.log("===========转为字符串");
console.log("===使用toString()方法");
var score = 160;//数值转为字符串
console.log(score.toString());//默认10进制
console.log(score.toString(2));//指定二进制
console.log(score.toString(8));//指定八进制
console.log(score.toString(16));//指定十六进制
var bool = true;//布尔值转为string
console.log(bool.toString());
bool = false;
console.log(bool.toString());
var stri = "hello";//字符串转为string,自身
console.log(stri.toString());
console.log(stri.toString() === stri);
var nul = null;//null转为string
//console.log(nul.toString());//null没有toString() 方法,会抛异常
var unde = undefined;//null转为string
//console.log(unde);//没有toString() 方法,会抛异常
console.log("===使用String()函数");
console.log(String(score));//默认10进制
console.log(String(bool));
console.log(String(stri));
console.log(String(stri) === stri);
console.log(String(nul));
console.log(String(unde));
console.log("===使用字符串拼接符+");
console.log(score + bool + stri + nul + unde);
// 1 + 2 = 3
// 3 + 3 = 6
// 6 + "" = "6"
console.log(1 + 2 + 3 + "");//结果6
// "" + 1 = "1"
// "1" + 2 = "12"
// "12" + 3 = "123"
console.log("" + 1 + 2 + 3);//结果123
</script>
</head>
<body>
</body>
</html>
版权声明:本文为dhbfjh原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。