当前位置: 首页 > news >正文

js的变量类型判断和类型的转换

类型判断

  1. typeof:number、string、boolean、object(null,object,array)、undefined、function

类型转换

  1. 显示类型转换

Number(mix):mix转换为数字  
  Number(null)   //结果为0
  Number(true)  //结果为1
  Number(false)  //结果为0
  Number(undefined) //NAN
  Number("123abc") //NAN
  Number({}) //NAN

String(target):转为字符串
  String(true) //"true"
  String(null)  //"null"
  String({})  //"[object Object]"
  String(undefined)  //"undefined"

Boolean(target):转为布尔型
  Boolean("45e") //true
  Boolean(45) //true
  Boolean({})  //true
  Boolean([])  //true
  Boolean(0) //false
  Boolean("") //false
  Boolean(null)  //false
  Boolean(undefined)  //false

parseInt(target):将数字转为整数,
 除了数字和以数字开始的字符串,其余都是NAN
 举栗子:parseInt("100px")

parseFloat(target):将数字转为浮点数
 除了数字和以数字开始的字符串,其余都是NAN

target.toString():target转为字符串 
  undefined和null不能用toString
parseInt(3,8)  //3
parseInt(3,2)  //NaN
parseInt(3,0)  //3或者NaN 浏览器不同结果不同
  • 隐形类型转换
隐形类型转换 :内部调用的是显示转换
isNaN():判断是否是NaN
isNaN("abc"),isNaN(undefined),isNaN({})  结果为 true
调用isNaN()时,会将target先放在Number()里面转换,然后和NaN比对

++/--:  会将target先放在Number()里面转换,变成number类型
+/-(正负) : 会将target先放在Number()里面转换...
+ (加号):左右两边有字符串左右参数就转为字符串
*/% : 会将target先放在Number()里面转换...
&& || ! : 会将target先放在Boolean()里面转换
< > <= >= :左右两边有数字,Number(); 都是字符串比较ASCII码值
== != :会将target先放在Boolean()里面转换

var a = "abc";
console.log(typeof a) //string
a++
console.log(a) //NaN
console.log(typeof a) //number

/*
先Number("abc") 转换成number类型 ,结果是 NaN ; typeof NaN-->number
*/
//练习
var str = false + 1;
console.log(str); 
var demo = false == 1;
console.log(demo);
if(typeof(a)&&-true + (+undefined) + ""){
	console.log('基础')
}
if(11 + "11" * 2 == 33){
	console.log('基础')
}
!!" " + !!"" - !!false||document.write('能否打印')

​1.var str = false + 1 替换成 var str = Number( false ) + 1
  Number(false )=0,所以结果为1

2.var demo = false == 1  替换成  var demo = Number( false ) == 1 
                         进而为  var demo =       0         == 1
  结果为false

3.typeof(a)&&-true + (+undefined) + "" 
typeof(a) = undefined, -true=-Number(true)=-1,
undefined &&  -1  ==>Boolean('undefined') &&  Boolean(-1) ==> true && true ==> -1
 (+undefined)=Number(undefined)=NaN
-1 + NaN = NaN
NaN + "" = "NaN"

4.
!!" " ==> 1
!!"" ==> 0
!!false||document.write("ff") ==> undefined
1+0-undefined ===> NaN

 

相关文章:

  • vscode 常用设置和插件
  • 可迭代对象和类数组
  • js数组遍历方法总结与对比
  • PAT乙级 我要通过(1003)的详细解答过程
  • PAT乙级 成绩排名(1004) c++题解
  • PAT乙级 继续(3n+1)猜想(1005) c++题解(打表越界的段错误)
  • PAT乙级 素数对猜想(1007)c++实现
  • PAT乙级 说反话(1009)c++新手易懂版
  • 图的深度遍历(邻接表)SCAU c++
  • 图的广度遍历(邻接表)SCAU c++
  • 堆排序 SCAU c++
  • 归并排序(非递归)超详细解答!!
  • PAT乙级 一元多项式求导(1010)详细解答c++
  • C语言课程设计物品竞拍管理(成品版!)
  • 折半查找判定树的画法(较简单易懂!)
  • 【391天】每日项目总结系列128(2018.03.03)
  • Debian下无root权限使用Python访问Oracle
  • iOS编译提示和导航提示
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • javascript 哈希表
  • PAT A1120
  • ReactNativeweexDeviceOne对比
  • React系列之 Redux 架构模式
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • zookeeper系列(七)实战分布式命名服务
  • 安卓应用性能调试和优化经验分享
  • 闭包--闭包作用之保存(一)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 当SetTimeout遇到了字符串
  • 回顾 Swift 多平台移植进度 #2
  • 如何利用MongoDB打造TOP榜小程序
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 学习HTTP相关知识笔记
  • 鱼骨图 - 如何绘制?
  • 在Unity中实现一个简单的消息管理器
  • Java性能优化之JVM GC(垃圾回收机制)
  • mysql面试题分组并合并列
  • Spring第一个helloWorld
  • "无招胜有招"nbsp;史上最全的互…
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #if #elif #endif
  • (03)光刻——半导体电路的绘制
  • (7)STL算法之交换赋值
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (多级缓存)多级缓存
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .bat批处理(六):替换字符串中匹配的子串
  • .net CHARTING图表控件下载地址
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net IE10 _doPostBack 未定义
  • .net和jar包windows服务部署
  • @Autowired和@Resource的区别
  • @Autowired和@Resource装配