javascript是弱类型语言,数据类型都是有数据决定的

对于不同数据类型的运算时,数据类型会进行转换:
number + number = number
number + string = string

javascript中想要查看自己的数据类型是什么:typeof(你想要查看的)

*1、隐式转换:
自动转换:悄悄的,我们程序员看不见的数据类型的转换
*其实只要是算术运算,默认左右两边都会转成数字,再运算
*特殊:1、+运算,只要有一个是字符串那么左右两边都会悄悄转为字符串,在拼接
2、true->1 false->0 undefined->NaN null->0
3、-*/%,其实字符串也可以转为数字,只不过必须是纯数字组成的字符串才可以,只要包含了非数字字符,则转为NaN

NaN:Not a Number:不是一个数字,但他确实是number类型,简单理解:无效的数字
特点:1、NaN参与任何算术运算结果都为NaN
2、NaN参与任何比较运算结果都为false,甚至自己都不认识自己
问题:正是因为自己都不认识自己,所以我们没有办法使用普通的比较运算来判断一个x是不是NaN
有可能用户恶意输入,结果隐式转为NaN,我们如何放置恶意输入
解决:判断x是不是NaN
var bool=isNaN(x); x是NaN结果为true x是数字结果false
个人更爱反用:!isNaN(x):x是数字结果为true,x是NaN结果就为false
!isNaN(x)专用防止用户恶意输入,目前我们仅仅只能控制用户输入数字 - 更深入的控制我们需要以后学习了正则表达式才可以

2、显式转换
强制转换:隐式转换的结果可能不是我们想要的,我们程序员可以手动调用某些方法,进行数据转换,再运算
1、转字符串:
语法:var str=xx.toString();//xx不能是undefined和null,因为undefined和null不能使用.
此方法不重要:页面上获取来的所有的数据默认都是字符串类型

2、*转数字:
*1、parseInt(str/num);
原理:从左向右依次读取每个字符,进行转换,碰到非数字字符,就停止,而且不认识小数点
如果一开始就碰到了不认识的字符,则转为NaN
比如:
parseInt(35.5) -> 35
parseInt("35.5") -> 35
parseInt("35hello5") -> 35
parseInt("hello35") -> NaN
parseInt("35px") -> 35
parseInt(bool/un/nu) -> NaN

*2、parseFloat(str);
原理:几乎和上者一致,但是它认识第一个小数点
比如:
parseFloat(35.5) -> 35.5
parseFloat("35.5") -> 35.5
parseFloat("35.5px") -> 35.5
parseFloat("35.5.5") -> 35.5
parseFloat(".555") -> 0.555
parseFloat("px35.5px") -> NaN
parseFloat(true) -> NaN

强调:以上两个方法,只支持str和num使用,其余的使用则为NaN ,可以去掉单位变成一个数字


3、Number(x);//万能的,任何数据都可以转为数字
//完全等效于隐式转换,还不如 x*1 x/1 x-0