一、书写语法
- 字符串由零个或多个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");
console.log("\u0022");
console.log("\u0027");
console.log("===========模板字面量");
var str1 = `hello
world`
console.log(str1);
var str2 = "hello\nworld"
console.log(str2);
console.log(str1 == str2);
var str3 = `hello
world`;
console.log(str3);
console.log(str1 == str3);
var html = `
<a href="#">
<span>不会变形</span>
</a>
`;
console.log(html);
console.log("===========字符串插值");
var name = prompt("请输入您的名字");
var strin = `恭喜👏🏻${name} 已经掌握了字符串插值的技能`;
console.log(strin);
var name2;
var strin2 = `恭喜👏🏻${name2} 已经掌握了字符串插值的技能`
console.log(strin2);
console.log(`恭喜👏🏻${name.toUpperCase()} 已经掌握了字符串插值的技能`);
console.log("===========转为字符串");
console.log("===使用toString()方法");
var score = 160;
console.log(score.toString());
console.log(score.toString(2));
console.log(score.toString(8));
console.log(score.toString(16));
var bool = true;
console.log(bool.toString());
bool = false;
console.log(bool.toString());
var stri = "hello";
console.log(stri.toString());
console.log(stri.toString() === stri);
var nul = null;
var unde = undefined;
console.log("===使用String()函数");
console.log(String(score));
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);
console.log(1 + 2 + 3 + "");
console.log("" + 1 + 2 + 3);
</script>
</head>
<body>
</body>
</html>
|