1.将其他类型得数据转化为Number类型的数据

字符串类型转数字

  • 把字符串转化为数字
  • 主要字符串中出现了非有效数字,那结果就是NaN
  • 如果是空字符串,那结果就是 0

    布尔类型转数字

  • true—>1 false—>0

    Null和undefined转数字

  • null—>0

  • undefined—>NaN

    引用类型转数字

  • 把普通对象转数字,浏览器会默认调用toString方法,先把对象转为字符串,然后在把字符串转为数字

    所有的对象转字符串都是 ‘[object Object]’ 所有的对象转数字都是NaN

把数组转化成数字

  • 先把数组里的每一项都去转字符串,最后再把所有的字符串加上逗号拼接起来,再把这个总的字符串转数字
  • 空数组转字符串是空字符串
  • 示例代码:

    1. // let ary = [1,'1',true];
    2. // '1','1','true'--->'1,1,true'--->NaN
    3. // let ary = [1,{}];
    4. // console.log(ary.toString()); // '1,[object Object]'
    5. // console.log(Number(ary)); // '1,[object Object]'-->NaN
    6. // console.log(Number[100]);// '100'-->100
    7. // console.log(Number([])); // ''-->0
    8. // let ary = [[],{}] // ',[object Object]' -->NaN

    2.ParseFloat(Val)转化数字

    把字符串转化为数字,要把字符串从左往右依次提取,直到提取到非有效数字为止,就把找到的数字返回回去,可以识别小数点,如果需要转化的内容不是字符串类型,会默认自动转为字符串类型

  • 代码示例

    1. // 如果转换的值不是字符串类型的,要先转字符串
    2. // console.log(parseFloat('1334ty556')); // 1334
    3. // console.log(parseFloat('tyy1334ty556')); // NaN
    4. // console.log(parseFloat('12.34')); // 12.34
    5. // console.log(parseFloat('12.34.5')); // 12.34
    6. console.log(parseFloat(true)); // 'true'-->NaN
    7. console.log(parseFloat(null)); // 'null'-->NaN

    3.PareseInt(Val)转化数字

    用法与ParseFloat一致,但是无法识别小数点

    4.val.toFixed(保留的小数位):保留小数点位数

    保留小数点位数,返回结果是一个字符串,而且还有四舍五入的机制 ```javascript // var num = 100;

    1. // console.log(num.toFixed(2)); // '100.00'
    2. // var num = 100.456;
    3. // console.log(num.toFixed(2)); // '100.46'
    4. // Number( num.toFixed(2) )//-->Number('100.46') -->100.46
  1. // var num = 100.456;
  2. // num = num.toFixed(2); // '100.46'
  3. // //---------
  4. // num = Number(num); // 100.46
  5. // console.log(num); // 100.46
  1. <a name="fGJbP"></a>
  2. ## 5.isNaN(判断是否是非有效数字)
  3. <a name="4twjS"></a>
  4. ## 6.String类数据转化
  5. - 拿单引号,双引号,反引号包裹起来的就是字符串
  6. - 把其他数据类型转换为字符串 val.toString(); String(val)
  7. - 把Number和Boolean准字符串直接加引号(基本值转字符串直接加引号)
  8. ```javascript
  9. // console.log( (12).toString() ); //'12'
  10. // console.log(true.toString()); // 'true'
  11. // console.log(null.toString()); // null和undefined不能直接调用toString
  12. // console.log(String(null)); // 这是可以的
  13. // console.log(String(undefined)); // 这是可以的
  • 把引用值转字符串

    1. // 所有的普通对象转字符串都是'[object Object]'
    2. // let obj = {};
    3. // console.log(obj.toString()); // '[object Object]'
    4. // 数组转字符串:先把数组里的每一项都去转字符串,最后再把所有的字符串加上逗号拼接起来,
    5. // let ary = [1,2,3,4];
    6. // console.log(ary.toString()); // '1' ,'2','3','4'-->'1,2,3,4'
    7. console.log(String([1,2,3,4]));

    7.四则运算

  • 如果运算的值不是Number类型的,要先转化为Number类在进行运算

  • 只要在数学运算过程中出现了NaN,那最后的结果就是NaN ```javascript // // console.log(12+35*12);

    1. // console.log(null+true+false); // 0+1+0->1
    2. // console.log(null+1+true); // 0 + 1+ 1 = >2
    3. // console.log(null +undefined); // 0 + NaN --> NaN
    4. // console.log(true*null); // 0
    5. // 在加法运算过程中,会出现两种情况
    6. // 正常运算
    7. // 字符串拼接:在加法中一旦加号和引号相遇了,那就不在是正常的数学运算,就是字符串拼接了
    8. // 如果是基本值就直接拼接,不用进行数据类型的转换
    9. console.log(1 + '11'); // '111'
    10. console.log(true + '11'); // 'true11'
    11. console.log(1 + 'wer'); // '1wer'
    12. console.log(1 - 'wer');// 1-NaN -->NaN
    13. console.log(1+2+3+'23'); // 6+'23'-->'623'
    14. console.log(1+2+3+"23"+1+1); // 6 + '23' +1 +1 --> '623' + 1+ 1-->'6231' + 1-->'62311'
    15. console.log(1 + true + null + undefined + 'erYa' +true);
    16. // 1+1-->2
    17. // 2+ 0
    18. // 2+ NaN
    19. // NaN + 'erYa'
    20. // 'NaNerYa' + true
    21. // 'NaNerYatrue'
    22. console.log(35 + 678 + undefined -true +'erYa' + true + undefined);
  1. let a = 1 + null + true + [] +undefined + '森哥'+ null + {} + 10 + false;
  2. // '2undefined森哥null[object Object]10false'
  3. // 'NaN森哥null10false'
  4. console.log('1'+undefined); // '1undefined'
  5. // 引用值的拼接
  6. // console.log(1+[]); // 1 '1'
  7. // 引用值在转数字的过程中,要先转字符串,转成字符串以后加号和引号相遇了,那就直接拼接了
  8. // 1 + '' ---> '1'
  9. // 如果在拼接过程中遇到了引用值,也要进行数据类型的转换
  10. // console.log([] + []); // '' + []-->''+''--> ''
  11. // console.log({} + {}); // '[object Object]' + {}-->'[object Object]' + '[object Object]' -->'[object Object][object Object]'
  12. // console.log({} + []); // '[object Object]' + []--->'[object Object]' + ''-->'[object Object]'
  13. // console.log(1*{}); // 1-NaN-->NaN
  14. // []+1*[]-->[]+0-->''+0-->'0'
  15. // console.log([]+1*[]);
  16. // console.log(1 +true +null + undefined + 'erYa' +[] +{});
  17. // // NaN +'erYa'-->'NaNerYa' +[]-->'NaNerYa'+{}--> 'NaNerYa' +'[object Object]' -->'NaNerYa[object Object]'
  18. // console.log(10 + null + true + [] + '珠峰' + [] + null + {} + false);
  19. // 11 +''-->'11' +'珠峰'-->'11珠峰'-->'11珠峰' +[]-->'11珠峰'+null--> '11珠峰null'-->'11珠峰null' +'[object Object]'-->'11珠峰null[object Object]false'
  1. <a name="rnzlh"></a>
  2. ## 8.Boolean类型的转化
  3. - 只有这些转化成Boolean类型是false:NaN null undefined 0 '',其余都是ture
  4. - !val:先将其转化成Boolean类型,然后取反
  5. ```javascript
  6. /*
  7. Boolean true false
  8. 1、把其他数据类型转化为布尔类型 Boolean(val)
  9. // 把其他数据类型转布尔有且只有 NaN、null、undefined、0、''是false,其余的都是true
  10. */
  11. // console.log(Boolean(NaN));
  12. // console.log(Boolean(null));
  13. // console.log(Boolean(undefined));
  14. // console.log(Boolean(''));
  15. // console.log(Boolean(0));
  16. // !val:先把val转布尔然后在取反
  17. // !!val:先把val转布尔,然后然后取反再取反,等价Boolean(val)
  18. console.log(!1); // false
  19. console.log(!isNaN(0)); // true
  20. console.log(!isNaN(![1,2,3])); // !isNaN(false) // true
  21. console.log(!isNaN(undefined)); // false
  22. // !isNaN(![1,2,3])
  23. // !isNaN(false)
  24. // !false-->true

9.普通对象Object

任何一个对象都是拿大括号进行包裹,而且里边存放的是0到多组键值对,每一组键值对之间拿逗号分隔,每一个键值对由属性名和属性值组成,
属性名的类型是字符串或者数字,
属性值是js数据类型的任意一种

  1. let person = {
  2. name:'linPeng',
  3. age:18,
  4. sex:'boy',
  5. hobby:'girl',
  6. isMoney: true,
  7. 2:'1111'
  8. };
  9. console.log(person);
  10. // 对象的增删改查
  11. // 查:获取对象中属性名对应的属性值
  12. // 对象名.属性名
  13. // 对象名['属性名']
  14. // 如果属性名是数字,那只能用 对象名['属性名'] 去获取
  15. //属性名如果一样,下面的会覆盖上面的
  16. // console.log(person.name); // 'linPeng'
  17. // console.log(person['name']);
  18. // console.log(person.age); // 18
  19. console.log(person[2]); // '1111' 加不加引号都可以
  20. // 增:给对象新增键值对
  21. // 对象名.属性名 = xxx
  22. // 对象名['属性名'] = xxx
  23. // person.friend = 'laowang';
  24. // person['friend'] = 'laowang';
  25. // console.log(person);
  26. // 改:修改对象中属性名对应的属性值
  27. // person.name = 'monkey';
  28. // console.log(person);
  29. // 删除键值对
  30. // 假删除
  31. // person.name = null;
  32. // console.log(person);
  33. // 真删除
  34. // delete 对象名.属性名
  35. delete person.name
  36. console.log(person);
  37. // 获取对象中属性名对应的属性值获取不到,那就是unedfined