当前位置: 首页 > Web前端 > HTML5

JS数据类型与数据类型转换

时间:2023-04-04 23:02:10 HTML5

JS数据类型转换小计数据类型最新的ECMAScript标准定义了7种数据类型原始类型BooleanNullUndefinedNumberStringSymbol对象7.Object显式类型转换Number函数原始类型转换值:转换后保持不变Thevalueofconsole.log(Number(123))//123string:如果可以解析为值,则转换为对应的值,否则为NaN。空字符串将被转换为0console.log(Number('123'))//123console.log(Number('123abc'))//NaNconsole.log(Number(''))//0Boolean:trueis转为1,false转为0console.log(Number(true))//1console.log(Number(false))//0undefined:转为NaNconsole.log(Number(undefined))//NaNnull:转为0console.log(Number(null))//0对象类型转换先调用对象本身的valueOf方法,如果该方法返回的是原始类型(number、string和boolean)的值,则直接对该值使用Number方法而不用进一步的步骤。如果valueOf方法返回的是复合类型的值,则调用对象本身的toString方法;如果toString方法返回原始类型的值,则使用Number方法获取该值,无需其他步骤。如果toString方法返回的是复合类型的值,会报错。console.log(Number({a:1}))//NaN原理过程:a.valueOf()//{a:1}a.toString()//"[objectObject\]"Number("[objectObject]")//NaNString函数原类型转换值:转换为对应的字符串string:转换为原值布尔值:true转'true',false转'false'undefined:转为'undefined'null:转为'null'对象类型转换首先调用toString方法,如果toString方法返回的是原始类型的值,则对该值使用string方法,不执行后面的步骤。如果toString方法返回的是复合类型的值,则调用valueOf方法,如果valueOf方法返回的是原始类型的值,则对该值使用String方法,无需执行以下步骤。如果valueOf方法返回的是复合类型值,则会报错。boolean函数原类型转换undefined:转falsenull:转false0:转falseNaN:转false''(空串):转false以上全部转false,其他转true隐式类型转换在js中上面,operator在操作的时候,如果两边的数据不一致,CPU就无法计算。这时候我们的编译器会自动对运算符两边的数据进行一次数据类型转换,转换成相同的数据类型再进行计算。这种不需要程序员手动转换,而是由编译器自动转换,称为隐式转换小坑这类问题中:+分为两种情况Stringconnectors:+号的两侧有一个是字符串,其他数据类型会通过调用String()方法转换成字符串再拼接。算术运算符:+号两边都是数字,其他数据会通过调用Number()方法转换成数字再相加。控制台日志(1+真);//算术运算符:1+Number(true)=1+1=2console.log(1+'true');//字符串连接器:String(1)+'true'='1'+'true'='1true'console.log(1+undefined)//数学运算符:1+Number(undefined)=1+0=1console.log(1+null)//数学运算符:1+Number(null)=1+0=1大坑&%......&¥&%...(&))有吐槽。....