1.为什么要有隐式类型转换?
当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算
2.什么是隐式类型转换:编译器自动转换
1.转成string类型:+号两边如果有一边是字符串,则会把另一边转换成字符串,然后进行拼接
2.转成number类型:以下几种运算符会将任何数据转换成number类型再运算,如果无法转换则为NaN
自增自减(++ –)
算术运算符(+ - * / %)
比较运算符(> < >= <= == != === !==)
说明:全等与不全等会先比较值(此时会隐式转换再比较),然后再比较数据类型
3.转成boolean类型:逻辑非(!)会将任何数据转为boolean类型再运算
4.+号有三种含义:数学正负号(转成number)、算术运算符(转成number)、字符串连接符(转成string)
<script>
/*隐式类型转换:运算符在运算时,如果两边的数据类型不一致,编译器会先转换数据类型进行运算
* 1. +号两边如果有一边是字符串,则会把另一边转换成字符串,然后进行拼接
* 2.以下几种运算符会将任何数据转换成number类型再运算,如果无法转换则为NaN
* 自增自减(++ --)
* 算术运算符(+ - * / %)
* 比较运算符(> < >= <= == != === !==)
* 说明:全等与不全等会先比较值(此时会隐式转换再比较),然后再比较数据类型
* 3.逻辑非(!)会将任何数据转为boolean类型再运算
* 4.+号有三种含义:数学正负号(转成number)、算术运算符(转成number)、字符串连接符(转成string)
*/
//示例1
var str1 = '1';
var str2 = 'abc'
console.log ( ++ str1 );//2
console.log ( ++ str2 );//NaN
//示例2
//此时+号含义并不是字符串连接符,而是算术运算符,所以会将true转成number
console.log ( 1 + true );//2
console.log ( 1 + "true" );//1ture 字符串连接符:+号两边有一边是字符串
console.log ( 100 * "3" * false );//0
//示例3
console.log ( "10" + "3" > 100 );//true (1)先进行字符串拼接得到"103" (2)然后把"103"转成103>100
console.log ( "10" - 3 > 100 );//false (1)先把"10"转成10 然后相减得到7 (2)7>100
//示例4
console.log ( ! "0" );//false boolean('0') = true
console.log ( ! 0 );//true boolean(0) = false
</script>