js 类型转换学习
类型转换分为显示转换和隐式转换
参考http://www.cnblogs.com/mizzle/archive/2011/08/12/2135885.html
先事件显示的
通过手动进行类型转换,Javascript提供了以下转型函数:
转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)
转换为字符串类型:toString(radix)、String(mix)
转换为布尔类型:Boolean(mix)
1、Number(mix)函数,可以将任意类型的参数mix转换为数值类型。其规则为:
1. 用于检测是否为非数值的函数:isNaN(mix)
isNaN()函数,经测试发现,该函数会尝试将参数值用Number()进行转换,如果结果为“非数值”则返回true,否则返回false。
不是number 是 parseInt 或parseFloat
范例
isNaN(1,1)
console.log('parseInt 比 Number 多了个 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止')
实践了下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | console.log( '' ) console.log( 'Number(mix)函数,可以将任意类型的参数mix转换为数值类型。其规则为:' ) console.log( '如果是布尔值,true和false分别被转换为1和0' ) console.log( 'Number(true)' ) console.log(Number( true )) console.log( 'Number(false)' ) console.log(Number( false )) console.log( '如果是数字值,返回本身' ) console.log(Number(1)) console.log(Number(2)) console.log(Number(0x8d)) console.log( '如果是null,返回0' ) console.log(Number( null )) console.log( '如果是undefined,返回NaN' ) console.log(Number(undefined)) console.log( '如果是字符串,则:1如果字符串中只包含数字,则将其转换为十进制(忽略前导0)' ) console.log(Number( '01234' )) console.log( '如果是字符串,则:2如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0)' ) console.log(Number( '.1234' )) console.log( '如果是字符串,则:3如果是空字符串,将其转换为0' ) console.log(Number( '' )) console.log( '如果是字符串,则:4如果字符串中包含非以上格式,则将其转换为NaN' ) console.log(Number( 'b.1234' )) console.log( '===========================' ) console.log( '如果是对象,则调用对象的valueOf()方法,然后依据前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,再次依照前面的规则转换返回的字符串值' ) console.log( '===========================' ) console.log( '测一下valueOf' ) console.log( 'Array' ) console.log([1,2,3,4,5,6].valueOf()) console.log( typeof [1,2,3,4,5,6].valueOf()) console.log(( new Array(1,2,3,4,5)).valueOf()) console.log([1,2,3,4,5,6].toString()) console.log( 'Boolean' ) console.log(Boolean( true ).valueOf()) console.log( typeof Boolean( true ).valueOf()) console.log( 'Date' ) console.log(( new Date()).getDate().valueOf()) console.log( 'getTime' ) console.log(( new Date()).getTime().valueOf()) console.log( 'Function' ) function mytest(){ var ss=1} console.log(mytest.valueOf()) console.log( "typeof:" + typeof mytest.valueOf()) console.log( 'Number' ) console.log(Number(5).valueOf()) console.log( 'parseInt(string, radix)函数,将字符串转换为整数类型的数值。它也有一定的规则' ) console.log( '忽略字符串前面的空格,直至找到第一个非空字符' ) console.log(parseInt( ' 1' )) console.log( '如果第一个字符不是数字符号或者负号,返回NaN' ) console.log(parseInt( ' -' )) console.log(parseInt( ' -1' )) console.log(parseInt( ' d' )) console.log( '如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止' ) console.log(parseInt( ' 123ddddd' )) console.log( '如果上步解析的结果以0开头,则将其当作八进制来解析;如果以0x开头,则将其当作十六进制来解析' ) console.log(parseInt( ' 077' )) console.log(parseInt( ' 077' ,8)) console.log(parseInt( ' 09' )) console.log(parseInt( ' 0xa' )) console.log( 'parseInt 和 Number 会忽略所有前导0 除了16禁止0xa 另外js应该没有8进制文本表示' ) console.log(parseInt( ' xa' )) console.log(parseInt( ' 0xa' )) console.log(parseInt( ' 066' )) console.log(Number( ' 066' )) console.log( 'parseInt 比 Number 多了个 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止' ) function a(){ var ss=1} console.log(a.toString()) console.log( typeof a.toString()) console.log( '==' ) console.log([1,2].valueOf().toString()) console.log(Number([1,2])) console.log(parseInt([1,2])) console.log(Number( '9a' )) console.log(parseInt( '9a' )) console.log( '==================================' ) console.log( '逻辑操作符(!、&&、||)' ) console.log( '逻辑与(&&)操作符,如果一个操作值不是布尔值时,遵循以下规则进行转换' ) console.log( '如果第一个操作数经Boolean()转换后为true,则返回第二个操作值,否则返回第一个值(不是Boolean()转换后的值)' ) console.log( '0&&1' +0&&1) console.log( '1&&0' +1&&0) console.log( '如果有一个操作值为null,返回null' ) console.log( 'null&&1:' +( null &&1)) console.log( '如果有一个操作值为NaN,返回NaN' ) console.log( 'NaN&&1:' +(NaN&&1)) console.log( '如果有一个操作值为undefined,返回undefined' ) console.log( 'undefined&&1:' +(undefined&&1)) console.log( '加好的优先级 要比&& 高' ) console.log( '逻辑或(||)操作符,如果一个操作值不是布尔值,遵循以下规则' ) console.log( '如果第一个操作值经Boolean()转换后为false,则返回第二个操作值,否则返回第一个操作值(不是Boolean()转换后的值)' ) console.log( '0||1:' +(0||1)) console.log( '1||0:' +(1||0)) console.log( '对于undefined、null和NaN的处理规则与逻辑与(&&)相反' ) console.log( 'null||1:' +( null ||1)) console.log( '如果有一个操作值为NaN,返回第二个' ) console.log( 'NaN||1:' +(NaN||1)) console.log( '如果有一个操作值为undefined,返回第二个' ) console.log( 'undefined||1:' +(undefined||1)) |
test
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步