基本数据类型之string相关
string
- 所有单引号、双引号、反引号(ES6的模板字符串)包起来的都是字符串
- 天生自带一个length属性,代表字符串的长度或者个数
- 空格也是一个字符
val.toString()
- 把number、boolean、null、undefined转字符串都是直接加引号
- null/undefined不能用.toString()方法转字符串
- 把普通对象转字符串,都为’[object Object]’
- 数组转字符串,把中括号去掉,然后把数组内的每一项分别做.toString()运算,数组内的逗号不能丢。
<script>
console.log((1).toString())
// '1'
console.log((true).toString())
// 'true'
console.log(([]).toString())
// ''
console.log(({}).toString())
// '[object Object]'
console.log([{}, []].toString()) // '[object Object],'
console.log([null, undefined].toString()) // ','
console.log((''+null).toString())
//'null'
</script>
字符串拼接
四则运算(加减乘除)
在四则运算中,除了加法,其余的都是正常的运算
在正常运算过程中,如果运算的值不是数字类型,先转数字类型,再运算。
在正常运算过程中,如果出现了NaN,结果就是NaN
特殊的加法
- 正常运算
- 字符串拼接
- 加号跟引号相遇,就是字符串拼接(基本数据类型相加是这样的)
- 在运算过程中,引用数据类型,必须要转数字类型,过程中,先转字符串类型,然后加号与字符串相遇,停止转数字类型,开始字符串拼接
<script>
// // string
// // 把number、boolean(true,false)转字符串都是直接加引号
// // val.toString()
// console.log( (1).toString() ) // '1'
// console.log( (-3.1415926).toString() ) // '-3.1415926'
// console.log(true.toString()) // 'true'
// console.log(false.toString()) // 'false'
// // console.log(null.toString()) // 报错
// // console.log(undefined.toString()) // 报错
// console.log(''+null) // 'null'
// console.log([].toString()) // ''
// conosle.log( ({}).toString() ) // '[object Object]'
// conosle.log( ({name: 'erYa'}).toString()) // '[object Object]'
1
// 在运算中过程中,如果相运算的值不是数字类型的,先转为数字类型,在运算
// 在运算过程当中,如果出现了NaN,那结果就是NaN
/* > 在加法中有两种情况:
+ 正常运算
+ 字符串拼接:如果加号一旦跟引号相遇了,那就是字符串拼接,不再是正常的运算 */
// console.log(true + true) // 1+1=2
// console.log(undefined + true) // NaN+1=NaN
// console.log(1+ true+null+undefined+ 35+ null) // NaN
// console.log(1+ 'wer') // '1wer'
// console.log(true + '1') // 'true1'
// console.log(1+ true+null+undefined+'erYa'+ true);
// // 2+0+NaN=>NaN=>'NaNerYa'+ true=>'NaNerYatrue'
console.log(1+ true + null + undefined+ 'erYa' + [] + {})
// 1+true=>2=>2+null=>2=>2+undefined=>NaN=>NaN+'erYa'=>'NaNerYa'=>'NaNerYa' + []=>'NaNerYa' + ''=>'NaNerYa'=>'NaNerYa' + {}=>'NaNerYa' + '[object Object]' => 'NaNerYa[object Object]'
console.log([] + {})
// ''+{}=>'' + '[object Object]'=>'[object Object]'
console.log(1 + []); // '1'
// 1+'' =>'1'
console.log({} + NaN)
// '[object Object]'+ NaN =>'[object Object]NaN'
console.log(true+10/true-undefined) // NaN
console.log(true+10/true + [] ) // NaN
// true+10=>11 - {} =>NaN
// 11 + [{}]
// 11 + '{}'
'11{}'
// console.log(true - [11])
// 把true转换数字用四则运算转
console.log(true*1) // 1-0 // 1
// 把null转换为数字 0
console.log(null*1)
console.log([]-0)
console.log(Number( isNaN(2) ))
</script>