博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
显式强制类型转换
阅读量:5317 次
发布时间:2019-06-14

本文共 1406 字,大约阅读时间需要 4 分钟。

1. 日期显式转换为数字
 
  1. +new Date; //1478845373322
javascript有个奇特的语法,即
构造函数没有参数时可以不用带()。
不过最好还是使用ES5中新加入的
 静态方法:Date.now()。
2. ~运算符
按位运算符只适用于32位整数,运算符会强制操作数使用32位格式。这是通过抽象操作ToInt32实现的。
ToInt32 首先执行ToNumber 强制类型转换,比如“123”会先转换为123,然后再执行ToInt32。
按位运算符有6个: 
& 按位与
 
    
| 按位或     
^ 按位异或
 
    
~ 取反
 
    
>> 右移
 
    
<< 左移
但这严格来说并不是强制类型转换(因为返回值类型并没有发生变化),但按位运算符(例如 | 或~)和某些数字一起使用时会产生类似强制类型转换的效果,返回另外的数字。
例如 | 运算符 0|x仅执行ToInt32转换。但以下特殊字符无法以32格式呈现,因此ToInt32返回0。
 
  1. 0|-0;//0
  2. 0|NaN;//0
  3. 0|Infinity;//0
  4. 0|-Infinity;//0
~ 首先将值强制类型转换为32位数字,然后执行按位运算符操作“非”(对每个字符进行反转)。
另外一种说法,源自早期的计算机科学和离散数学:~返回2的补码。
~x等同于 -(x+1);
 
  1. ~5; //-6
3. 字位截除 ~~
~~中第一个 ~ 执行ToInt32并反转字位,然后第二个 ~ 再进行一次字位反转,将所有的字位反转为原值,最后得到的仍是ToInt32的结果。
~~只适用于32位数字,且它对负数的处理与Math.floor(...)不同。
 
  1. Math.floor(-88.9); //-89
  2. ~~-88.9; //-88
~~可以将值截除为一个32位整数,x|0也可以。但最好是使用~~,出于运算符优先级的考虑。
4. 显式解析数字字符串
解析允许字符串中含有非数字字符串,从左到右解析,遇到非数字字符则停止,而转换不允许出现非数字字符,否则会失败并返回NaN。
 
  1. var a="56";
  2. var b="56px";
  3. Number(a); //56
  4. parseInt(a); //56
  5. Number(b); //NaN
  6. parseInt(b); //56
ES5之前的parseInt32(...) 有一个坑,如果没有第二个参数来指定转换的基数,它会根据字符串的第一个字符来自行决定基数。
如果第一个字符是x或者X,则转换为十六进制数字。如果是0,则转换为八进制数字。
ES5开始,parseInt32(...) 默认转换为十进制。
5. 显式转换为布尔值  Boolean(...)
一元运算符!显式的将值类型转换为布尔值,但同时会将真值转换为假值,假值转换为真值。所以显式强制类型转换为布尔值常用的做法是!!,第二个!会将结果反转为原值。
 
  1. var a="0";
  2. var b=[];
  3. var c={};
  4. !!a; //true
  5. !!b; //true
  6. !!c; //true
下面这段代码:
 
  1. var a=56;
  2. var b=a?true:false;
a 首先被强制转换为布尔值才能进行条件判断,成为“显式的隐式”。建议使用Boolean(a)和!!a来进行显式的强制类型转换。

转载于:https://www.cnblogs.com/cheemon/p/6054550.html

你可能感兴趣的文章
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
MongoDB-CRUD
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>