Number 数据类型

数据类型: 0 -1 1 0.1 NaN Infinity

NaN:not a number不是一个有效数字,但是属于number数据类型的

Infinity:无穷大的值  -Infinity无穷小的值

var num = 1;

      num = 2;

 

=赋值 ==比较

NaN==NaN  false不相等  NaN和任何值都不相等的

所以我们以后无法基于 xxx==NaN 来验证xxx是否为有效数字,我们应该基于一个新的方法来验证 isNaN([value]):检测是否为非有效数字

 + 如果[value]值不是数字类型,默认需要先转换为数字类型,然后再去验证是否为有效数字

 + 如果是有效数字,返回false,如果不是有效数字,返回true

 

   1.把其他数据类型转换为Number数据类型

 

 + 手动转换

        + Number([value])

        + parseInt/parseFloat([value])

 

+ 隐式转换(自己默认转换的) 

      =>采用的就是Number([value])这个规则

        + isNaN([value]) 如果[value]不是数字则先转换为数字再进行有效数字的检测

    true:说明是非有效数字

    false:说明是有效数字

+ 数学运算:加减乘除及取余数等(注意,在加法运算中,如遇到“字符串/对象”,则不是数学运算,而是字符串拼接)

+ 在==比较的时候,如果两边值的类型不一样,大部分情况下都是转换为数字比较的

  Number([value]):强制把其他数据类型转换为数字类型

    + 把字符串转换为数字:空字符串变为0,只要字符串中出现任意一个非有效数字字符,结果都是NaN

    + 把布尔转换为数字:true变为1  false变为0

    + null变为数字0

+ undefined变为NaN

 + symbol不能基于Number转换为数字:Uncaught TypeError: Cannot convert a Symbol value to a number

    + bigint是正常转换的

    + 把引用数据类型(对象/函数)转换为数字:先把对象值转换为字符串(对象.toString() 特殊:其实是先基于valueOf获取它的原始值),然后再把字符串转换为数字的 

      + 普通对象转换为字符串 "[object Object]"

      + 函数转换为字符串 "函数你看到的那些代码"

      + 数组转换为字符串 空数组变为空字符串,剩下的是把数组中的每一项基于“逗号”分隔(只有一项是不需要分隔的)

parseInt/parseFloat([value]):

    它的规则和Number([value])是不一样的,它的规则是,先把[value]变为字符串,然后从字符串左侧开始查找,找到所有的有效数字字符转换为数字(遇到一个非有效数字字符,则停止查找,不论后面是否还有有效数字字符)

      parseFloat比parseInt多识别一个小数点

 

 

 

 

加法运算的规则(“+”左右两边的任何一边遇到字符串或者对象都是字符串拼接 [有原始值的对象刨除在外])

1 + '2'    "12"

1 + [10]  把对象变为数字之前是先转换为字符串,这样“+”两边中的一边遇到字符串,结果是字符串拼接接 -> 1 + '10'->'110'

1 + true+null+undefined+[]+'zhufeng'+false+[10]+undefined
1 + true -> 2
2 + null -> 2
2 + undefined -> 2 + NaN -> NaN
NaN + [] -> 'NaN'
'NaN' + 'zhufeng' -> 'NaNzhufeng'
... 后期都是字符串拼接

'NaNzhufengfalse10undefined' 

“+”的运算中如果“+”两边任意一边出现字符串(或对象),大部分都以字符串拼接的方式处理特殊具备原始值的对象

“+字符串” 或者 “++字符串” 再或者 “字符串++”,这种情况也是把字符串转换为数字

 

 

var n="10";

console.log(1+n); //"110"

console.log(+n); //10

console.log(++n); //11

  

let result=100+true+21.2+null+undefined+"Tencent"+[]+null+9+false;

100 + true = 101

101 + 21.2 = 122.2

122.2 + null = 122.2

122.2 + undefined = NaN


NaN + "Tencent" = "NaNTencent"

...     =>"NaNTencentnull9false"

console.log(result); 

  

 

posted @ 2020-12-12 18:50  Dear-不败菇凉  阅读(205)  评论(0)    收藏  举报