string字符串数据类型
所有用单引号('')、双引号("")、反引号(``ES6出现的模版字符串)包起来的都是字符串
把其他类型值转换为字符串
- [val].toString()
null和undefined是禁止直接toString的
(null).toString // => 报错
但是和undefined一样转换为字符串的结果就是'null'和'undefined'
普通对象.toString()的结果是"[object object]" =>? => Object.prototype.toString方法不是转换为字符串的,而是用来检测数据类型的
let a = 12;
console.log(a.toString()); // => '12'
console.log((NaN).toString()); // => 'NaN'
console.log(({'name': '张三'}).toString()); // => "[object object]"
- 字符串拼接
四则运算法则中,除加法外,其余都是数学计算,只有加法可能存在字符串拼接(一旦遇上字符串,则不是数学运算,而是字符串拼接)
console.log('10' + 10); // => '1010'
console.log('10' - 10); // => 0
console.log('10px' - 10); // NaN
有题如下:
let a = 10 + null + true + [] + undefined + '张三' + null + [] + 10 + false;
/*
* 10 + null -> 10 + 0 -> 10
* 10 + true -> 10 + 1 -> 11
* 11 + [] -> 11 + '' -> '11' 空数组变为数字,先要经历变为空字符串,遇到字符串,啥都别想了,直接变为字符串拼接
* '11' + undefined -> '11undefined'
* ...
* '11undefined张三null10false'
*/
console.log(a); // => '11undefined张三null10false'