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 多了个 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止')
实践了下
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))
js 类型转换学习的更多相关文章
- js再学习笔记
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- js入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
- JS入门学习,写一个时钟~
<!-- 耽搁了几天,于是又继续回到JS的学习了~~ 各种头大,加油吧... --> <!doctype html><html><head> <t ...
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- js类型转换的坑
JS的灵活 说好听是说JS灵活, 说不好听就是JS的坑太多, JS类型转换就是一个大坑, JS的类型包括了原始类型的[null, undefined, String ,Number, Boolean] ...
- JS数组学习笔记
原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...
- js 正则学习小记之匹配字符串
原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...
随机推荐
- 在linux终端远程登陆linux服务器
在linux终端远程登陆linux服务器 原来在Linux终端远程登陆linux服务器是那么的容易,如果的服务器用户名是abc(也可以是root),只需要在终端输入: 然后电脑会提示输入密码就登录 ...
- css面包屑导航编号
content:counter(flag);counter-increment: flag;-->一般给导航条编号1,2,3
- 将.dat文件导入数据库
*最近在搞文本分类,就是把一批文章分成[军事].[娱乐].[政治]等等. 但是这个先需要一些样本进行训练,感觉文本分类和"按图索骥"差不多,训练的文章样本就是"图&quo ...
- LYDSY模拟赛day2 Dash Speed
/* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<< ...
- STM32f103之外部中断
一.背景 有个需求,IO口检测上升沿,然后做相应的动作.在此记录STM32F103的外部中断结构及配置方法, 以备下次快速上手使用. 有许多不太明白,又是老司机(:-D)帮忙,真的是站在别人的肩膀上会 ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
- http_build_query 的一个问题
当我们使用CURL来post数据的时候,需要设置post的数据 curl_setopt($c, CURLOPT_POSTFIELDS, $post_data); 假如这里的$data是 $data = ...
- POJ2195 最小费用流
题目:http://poj.org/problem?id=2195 处理出每个人到每个门的曼哈顿距离,分别建立容量为1费用为曼哈顿距离的边,在源点和每个人人之间建立容量为1费用为0的边,在门和汇点之间 ...
- javascript数据结构-队列
gihub博客地址 队列(Queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插 ...
- html用户注册界面
html用户注册界面 先上一张简约的界面的效果图 这里是style里面的内容 <style> input[type]{ border: 1px solid darkorange; ba ...