在JS中用 单引号、双引号、反引号包起来的都是字符串
- 把其它数据类型转化为字符串类型,转换方式:
- String([value])
- [value].toString()
- 普通对象转换为字符串都是"[object Object]";
- 数组对象转换为字符串是"第一项,第二项……"(逗号分隔数组中的每一项)
console.log(String(10));//=> 输出结果 "10"
console.log(String(true));//=> 输出结果 "true"
console.log(String(null));//=> 输出结果 "null"
console.log(String(undefined));//=> 输出结果 "undefined"
- 在JS中常用的数学运算:+、-、*、/ 、%(取模);除了加法以外,其余的情况都是数学运算(如果遇到非数字类型,需要基于Number把其强制转换为数字类型,然后进行运算的);加号在JS中既有数学运算,也有字符串拼接的意思(只要加号两边的任意一边出现字符串,则变为字符串拼接);想把对象转换为数字,但是中间一定先要转换为字符串
console.log(7/3);//=> 2.3333333333333335
console.log(7%3);//=> 1
console.log(10-null);//=>10
console.log(3*undefined);//=>NaN
console.log(true-"12");//=> 1-12= -11
console.log(3-"3px");//=> NaN
console.log(3+"3px");//=>"33px"
console.log(1+"1");//=>"11"
console.log(1+{});//=> "1[onject Object]" =>在把{}转换为数字过程中,先把它转换为字符串"[object Object]",此时右侧出现了字符串,则不再是数学运算,而是字符串拼接了
console.log(1+[]);//=> '1'
console.log([10]+true);//=> "10true" 在转换[10]到数字的过程中,先把其转换为字符串"10",此时操作变为字符串拼接(和数学运算没过关系了)
console.log(true+[10]);//=> "true10"
console.log(1+true);//=> 2
练习1:console.log(100+true+21.2+null+undefined+"Tencent"+[]+null+9+false);
console.log(100+true+21.2+null+undefined+"Tencent"+[]+null+9+false);//=> NaNTencentnull9false
/**
* 100 + true = 101
* 101+ 21.2 = 122.2
* 122.2 + null = 122.2
* 122.2 + undefined = NaN
* NaN + "Tencent" = "NaNTencent"
* "NaNTencent" + [] = "NaNTencent"
* "NaNTencent" + null = "NaNTencentnull"
* "NaNTencentnull" + 9 = "NaNTencentnull9"
* "NaNTencentnull9" + false = "NaNTencentnull9false"
*/
练习2:完成字符串拼接处理:2020年03月03日 12:00:00
let year = '2020';
let month = '03';
let day = '03' ;
let hours = '12';
let minutes = '00';
let secondes = '00';
//传统的拼接方式,需要在字符串中基于"++"或者'++'的方式把变量拼接到字符串中,这种方式涉及很多规则,很容易拼错
let result = year+'年'+month+'月'+day+'日 '+hours+":"+minutes+":"+secondes;
//ES6中的模板字符串就是为了解决传统字符串拼接中的问题使用反引号(tab键上面的`键)、${}中存放变量或者其它的JS表达式即可,
let str = `${year}年${month}月${day}日 ${hours}:${minutes}:${secondes}`;
网友评论