显式转换:程序员主动调用语法去转换数据类型,语义更加明确
注意:数据类型的转变并不会改变原来变量的值,而是会产生一个新的值
例如:(1) let num = '10';
parseInt(num)
:
为什么要有数据类型转换?
有时候想要进行某种计算的时候,由于数据类型不同往往会产生一些错误的结果,为了避免这种结果,我们需要将某种数据类型转化为其他数据类型
例如:prompt()输入框得到的数据的类型是string,如果想要进行数学计算则需要转成number类型,否则会计算出错
什么是显示类型转换:程序员主动转换(可以理解为使用关键字来转换)
这种方式代码易读性更高
1.其他类型转换成number类型
/**转换成number
第一种方式:parseInt()
* 作用:转换整数
* 从左往右解析,遇到非数字结束(停止解析),将解析好的整数返回
* 如果第一个字符不是数字或者符号就返回NaN
第二种方式:parseFloat()
* 作用:转换小数
* 与parseInt()最大的区别就是可以解析字符串的第一个小数点
第三种方式: Number()
作用:布尔类型转换成数字
* 可以把任意值转换成数值,如果要转换的字符串只要有一个不是数字,返回NaN
*/
console.log ( Number ( “123” ) );//123
console.log ( Number ( “123.1.1abc” ) ); //NaN 只要有一个字符不是数字,得到就是NaN
console.log ( parseInt ( “123.1.1abc” ) ); //123 从左往右解析,遇到非数字结束
console.log ( parseFloat ( “123.1.1abc” ) );//123.1 与parseInt唯一的区别就是可以识别第一个小数点
//一般数字字符串使用parseInt和parseFloat,其他数据类型转数字使用Number()
console.log ( Number ( true ) ); //1布尔类型转换number会得到数字0(false)和1(true)
console.log ( Number ( “” ) ); //0 空字符串转number会得到0
//js基础面试题
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0
2.其他类型转换成string类型
1.第一种方式:变量名.toString()
如果变量的值为undefined或者null,则会报错
2.第二种方式:String(变量名)
与第一种方式的唯一区别就是如果变量的值为undefined或者null不会报错,会得到undefined或者null
let a = null;
//1.常用: String ( )
//特点:可以识别undefined与null
console.log ( String ( null ) );
console.log ( typeof String ( a ) );
// //2. 变量名.toString ()
//特点:无法识别undefined与null,程序会报错
console.log ( a.toString () );
3.其他类型转换成boolean类型
只有一种方式: Boolean(变量名)
官网文档中有八种情况得到的false:0、-0、null、false、NaN、undefined、或者空字符串("")、 document.all()
其他一切均为true
console.log ( Boolean ( 0 ) ); //false
console.log ( Boolean ( -0 ) ); //false
console.log ( Boolean ( null ) ); //false
console.log ( Boolean ( false ) ); //false
console.log ( Boolean ( undefined ) ); //false
console.log ( Boolean ( ‘’ ) ); //false
console.log ( Boolean ( NaN ) ); //false
2.隐式数据类型转换
==========
隐式转换:运算符两边数据类型不一致,编译器自动帮我们转换一致在计算,这是js的语法特点
隐式转换
1.转成string类型:+号两边如果有一边是字符串,则会把另一边转换成字符串,然后进行拼接
2.转成number类型:以下几种运算符会将任何数据转换成number类型再运算,如果无法转换则为NaN
数学正号 : +num
当 +/-
号写在一个变量名的前面,此时表示数学的正/负数
自增自减(++ --)
算术运算符(+ - * / %)
比较运算符(> < >= <= == != \=\=\= !==)
说明:全等与不全等会先比较值(此时会隐式转换再比较),然后再比较数据类型
3.转成boolean类型:逻辑非(!)会将任何数据转为boolean类型再运算
4.+号有三种含义:数学正负号(转成number)、算术运算符(转成number)、字符串连接符(转成string)