NaN 是什么 为什么 NaN == NaN 执行结果是false
NaN 即 Not a Number , 不是一个数字,JS中number数据类型中除了浮点型和整数型外的一个特殊的值 NaN。NaN是用来表示是否属于number类型的一种状态: 是或否。它不是一个确切的值。当一个表达式返回了NaN 时,表示该表达式中存在不可以转化的变量,并返回了无效的结果,而不是返回了一个确切的值。如果非要说NaN是一个值得话,那么 NaN 就是除数字外的任意值,绝不是确切的某一个值。因为它是一个范围,而不能代表一个确定的值,所以 NaN 不等于 NaN。
typeof( typeof(变量/数据) ) 执行结果永远是 string
因为typeof(变量/数据)得到的结果可能是number/boolean/string/undefined/object ,所以typeof( typeof(变量/数据) )就是typeof( number/boolean/string/undefined/object )此时存储的一定是字符串数据,所以typeof( typeof(变量/数据) ) 执行结果永远是 string。
undefined null true false NaN 虽然都是字符但是他们都是一种数值,不是字符串。执行 + 加号 运算时 执行的是 加法运算
'' "" 只有的带引号的内容,才是 字符串 才会执行字符串拼接
NaN + NaN ? NaN
因为 NaN 是数值执行的是加法运算。只要是有NaN参与的算数运算,结果都是 NaN
转化 将一种类型的数值变成另一种类型的数值
自动转化: 计算机程序执行执行的
转化为布尔类型 : if() 中执行
false : 0 ‘’ undefined null NaN 只有这5个是false,其他所有的数据,都是转化为true
转化为字符串 : 字符串拼接时
基本数据类型直接转化为字符串形式
引用数据类型
数组 : 将 [] 内的数据,转化为字符串
对象 : 一律转化为 [object Object]
函数 : 将函数的所有内容,都转化为字符串
转化为数值 : 执行数学运算时
布尔类型 : ture--->1 false--->0
undefined : NaN
null : 0
字符串 : 是纯数字的,会转化为对应的数值;有不符合数值规范的,转化为 NaN
强制转化 : 程序员人为执行的转化
转化为布尔类型 Boolean(数值 / 变量)
原则就是自动转化原则,不会改变,变量中存储的数值
转化为字符串 String(变量 / 数据)
+ 字符串拼接:原则与自动转化原则相同,不会改变变量中存储的数据
变量.toString(进制) 将数值,按照进制转化为对应的字符串输出,进制范围是 2-36
转化为数值
Number(数值/变量):与自动转化原则相同,不会改变,变量中存储的数值
parseInt(数值/变量)
从数据的左侧起 获取数据的整数部分;布尔类型 undefined null 对象 函数 ---> NaN;数组 是获取数组中第一个单元的整数部分
有整数部分,执行结果就是这个整数部分的内容, 没有整数部分,执行结果是 NaN
数值整数正常获取,浮点数获取小数点之前的部分
字符串 整数,是正常获取
浮点数,获取整数部分,也就是小数点之前
科学计数法 获取 e字符串之前的整数部分
带有不符合数值规范的内容,获取从左侧起,符合整数规范的部分
parseFloat(数值/变量)
从数据的左侧起获取数据的整数部分
布尔类型 undefined null 对象 函数 ---> NaN
数组 是获取数组中 第一个单元的 整数部分
有整数部分,执行结果就是这个整数部分的内容
没有整数部分,执行结果是 NaN
数值 整数,浮点数都是正常获取
字符串 整数,是正常获取
浮点数,是正常获取浮点数部分
科学计数法 会解析成浮点数来获取结果
带有不符合数值规范的内容,获取从左侧起,符合整数规范的部分