1.将其他类型得数据转化为Number类型的数据
字符串类型转数字
- 把字符串转化为数字
- 主要字符串中出现了非有效数字,那结果就是NaN
-
布尔类型转数字
-
Null和undefined转数字
null—>0
-
引用类型转数字
把普通对象转数字,浏览器会默认调用toString方法,先把对象转为字符串,然后在把字符串转为数字
所有的对象转字符串都是 ‘[object Object]’ 所有的对象转数字都是NaN
把数组转化成数字
- 先把数组里的每一项都去转字符串,最后再把所有的字符串加上逗号拼接起来,再把这个总的字符串转数字
- 空数组转字符串是空字符串
示例代码:
// let ary = [1,'1',true];// '1','1','true'--->'1,1,true'--->NaN// let ary = [1,{}];// console.log(ary.toString()); // '1,[object Object]'// console.log(Number(ary)); // '1,[object Object]'-->NaN// console.log(Number[100]);// '100'-->100// console.log(Number([])); // ''-->0// let ary = [[],{}] // ',[object Object]' -->NaN
2.ParseFloat(Val)转化数字
把字符串转化为数字,要把字符串从左往右依次提取,直到提取到非有效数字为止,就把找到的数字返回回去,可以识别小数点,如果需要转化的内容不是字符串类型,会默认自动转为字符串类型
代码示例
// 如果转换的值不是字符串类型的,要先转字符串// console.log(parseFloat('1334ty556')); // 1334// console.log(parseFloat('tyy1334ty556')); // NaN// console.log(parseFloat('12.34')); // 12.34// console.log(parseFloat('12.34.5')); // 12.34console.log(parseFloat(true)); // 'true'-->NaNconsole.log(parseFloat(null)); // 'null'-->NaN
3.PareseInt(Val)转化数字
4.val.toFixed(保留的小数位):保留小数点位数
保留小数点位数,返回结果是一个字符串,而且还有四舍五入的机制 ```javascript // var num = 100;
// console.log(num.toFixed(2)); // '100.00'// var num = 100.456;// console.log(num.toFixed(2)); // '100.46'// Number( num.toFixed(2) )//-->Number('100.46') -->100.46
// var num = 100.456;// num = num.toFixed(2); // '100.46'// //---------// num = Number(num); // 100.46// console.log(num); // 100.46
<a name="fGJbP"></a>## 5.isNaN(判断是否是非有效数字)<a name="4twjS"></a>## 6.String类数据转化- 拿单引号,双引号,反引号包裹起来的就是字符串- 把其他数据类型转换为字符串 val.toString(); String(val)- 把Number和Boolean准字符串直接加引号(基本值转字符串直接加引号)```javascript// console.log( (12).toString() ); //'12'// console.log(true.toString()); // 'true'// console.log(null.toString()); // null和undefined不能直接调用toString// console.log(String(null)); // 这是可以的// console.log(String(undefined)); // 这是可以的
把引用值转字符串
// 所有的普通对象转字符串都是'[object Object]'// let obj = {};// console.log(obj.toString()); // '[object Object]'// 数组转字符串:先把数组里的每一项都去转字符串,最后再把所有的字符串加上逗号拼接起来,// let ary = [1,2,3,4];// console.log(ary.toString()); // '1' ,'2','3','4'-->'1,2,3,4'console.log(String([1,2,3,4]));
7.四则运算
如果运算的值不是Number类型的,要先转化为Number类在进行运算
只要在数学运算过程中出现了NaN,那最后的结果就是NaN ```javascript // // console.log(12+35*12);
// console.log(null+true+false); // 0+1+0->1// console.log(null+1+true); // 0 + 1+ 1 = >2// console.log(null +undefined); // 0 + NaN --> NaN// console.log(true*null); // 0// 在加法运算过程中,会出现两种情况// 正常运算// 字符串拼接:在加法中一旦加号和引号相遇了,那就不在是正常的数学运算,就是字符串拼接了// 如果是基本值就直接拼接,不用进行数据类型的转换console.log(1 + '11'); // '111'console.log(true + '11'); // 'true11'console.log(1 + 'wer'); // '1wer'console.log(1 - 'wer');// 1-NaN -->NaNconsole.log(1+2+3+'23'); // 6+'23'-->'623'console.log(1+2+3+"23"+1+1); // 6 + '23' +1 +1 --> '623' + 1+ 1-->'6231' + 1-->'62311'console.log(1 + true + null + undefined + 'erYa' +true);// 1+1-->2// 2+ 0// 2+ NaN// NaN + 'erYa'// 'NaNerYa' + true// 'NaNerYatrue'console.log(35 + 678 + undefined -true +'erYa' + true + undefined);
let a = 1 + null + true + [] +undefined + '森哥'+ null + {} + 10 + false;// '2undefined森哥null[object Object]10false'// 'NaN森哥null10false'console.log('1'+undefined); // '1undefined'// 引用值的拼接// console.log(1+[]); // 1 '1'// 引用值在转数字的过程中,要先转字符串,转成字符串以后加号和引号相遇了,那就直接拼接了// 1 + '' ---> '1'// 如果在拼接过程中遇到了引用值,也要进行数据类型的转换// console.log([] + []); // '' + []-->''+''--> ''// console.log({} + {}); // '[object Object]' + {}-->'[object Object]' + '[object Object]' -->'[object Object][object Object]'// console.log({} + []); // '[object Object]' + []--->'[object Object]' + ''-->'[object Object]'// console.log(1*{}); // 1-NaN-->NaN// []+1*[]-->[]+0-->''+0-->'0'// console.log([]+1*[]);// console.log(1 +true +null + undefined + 'erYa' +[] +{});// // NaN +'erYa'-->'NaNerYa' +[]-->'NaNerYa'+{}--> 'NaNerYa' +'[object Object]' -->'NaNerYa[object Object]'// console.log(10 + null + true + [] + '珠峰' + [] + null + {} + false);// 11 +''-->'11' +'珠峰'-->'11珠峰'-->'11珠峰' +[]-->'11珠峰'+null--> '11珠峰null'-->'11珠峰null' +'[object Object]'-->'11珠峰null[object Object]false'
<a name="rnzlh"></a>## 8.Boolean类型的转化- 只有这些转化成Boolean类型是false:NaN null undefined 0 '',其余都是ture- !val:先将其转化成Boolean类型,然后取反```javascript/*Boolean true false1、把其他数据类型转化为布尔类型 Boolean(val)// 把其他数据类型转布尔有且只有 NaN、null、undefined、0、''是false,其余的都是true*/// console.log(Boolean(NaN));// console.log(Boolean(null));// console.log(Boolean(undefined));// console.log(Boolean(''));// console.log(Boolean(0));// !val:先把val转布尔然后在取反// !!val:先把val转布尔,然后然后取反再取反,等价Boolean(val)console.log(!1); // falseconsole.log(!isNaN(0)); // trueconsole.log(!isNaN(![1,2,3])); // !isNaN(false) // trueconsole.log(!isNaN(undefined)); // false// !isNaN(![1,2,3])// !isNaN(false)// !false-->true
9.普通对象Object
任何一个对象都是拿大括号进行包裹,而且里边存放的是0到多组键值对,每一组键值对之间拿逗号分隔,每一个键值对由属性名和属性值组成,
属性名的类型是字符串或者数字,
属性值是js数据类型的任意一种
let person = {name:'linPeng',age:18,sex:'boy',hobby:'girl',isMoney: true,2:'1111'};console.log(person);// 对象的增删改查// 查:获取对象中属性名对应的属性值// 对象名.属性名// 对象名['属性名']// 如果属性名是数字,那只能用 对象名['属性名'] 去获取//属性名如果一样,下面的会覆盖上面的// console.log(person.name); // 'linPeng'// console.log(person['name']);// console.log(person.age); // 18console.log(person[2]); // '1111' 加不加引号都可以// 增:给对象新增键值对// 对象名.属性名 = xxx// 对象名['属性名'] = xxx// person.friend = 'laowang';// person['friend'] = 'laowang';// console.log(person);// 改:修改对象中属性名对应的属性值// person.name = 'monkey';// console.log(person);// 删除键值对// 假删除// person.name = null;// console.log(person);// 真删除// delete 对象名.属性名delete person.nameconsole.log(person);// 获取对象中属性名对应的属性值获取不到,那就是unedfined
