尽管js可以做许多自动类型转换,但某些时候仍然需要做显示类型转换或为了代码逻辑清晰易读而做显示类型转换。

做显示类型转换最简单的方法就是用Boolean()、Number()、String()或Object()函数:

Number("3") //3
String(false)   //"false"
false.toString()//同上
Boolean([]) //true
Object(3)   //new Number(3)

js中的某些运算符会做隐式类型转换,比如:

若+运算符一个操作数是字符串,则它会将另一个操作数转换为字符串;

一元+运算符将其操作数转换为数字;

一元!运算符将操作数转换为布尔值并取反;

代码中经常可以看到如下类型转换的用法:

x+""    //等价于String(x)
+x  //等价于Number(x)
x-0 //同上
!!x //等价于Boolean(x),是双叹号哦

Number类定义的toString()方法可以按转换基数(radix)将数字转换为其它进制数的字符串表示(2-36之间):

var n =11;
bin_str = n.toString(2);
oct_str = "0" + n.toString(8);
hex_str = "0x" + n.toString(16);

Number类还为数字到字符串的类型转换场景定义了另外3个方法:

toFixed()根据小数点后的指定位数将数字转换为字符串,它从不使用指数记数法。

11.113344.toFixed(5)    //"11.11334"

toExponential()使用指数记数法将数字转换为指数形式的字符串,其中小数点前只有一位,小数点后位数由参数指定:

11.113359.toExponential(5)  //"1.11134e+1"

toPrecision()根据指定的有效数字位数将数字转换为字符串,如果有效数字位数小于数字整数部分的位数则转换为指数形式。

以上3个方法都会适当的进行四舍五入或填充0.

需要说明的是前面提到的Number()函数只能基于十进制数进行转换,而且不能出现非法字符。我们可以使用全局函数(不属于任何类的方法)parseInt或parseFloat函数来进行字符串到数字的转换;

parseInt()只解析整数,而parseFloat()可以解析整数和浮点数。

如果字符串前缀为”0x”或者”0X”,parseInt()将其解释为16进制数;parseInt和parseFloat都会跳过任意数量的前导空格,且尽可能解析更多的数值字符;如果第一个非空格字符是非法数字,则返回NaN。

parseInt可以接收第二个可选参数,该参数指定数字转换的基数,取值范围是2-36.

javascript显式类型转换的更多相关文章

  1. JavaScript显式类型转换与隐式类型转换

    隐式类型转换 四则运算 判断语句 toString 在 JavaScript 中声明变量不需指定类型,对变量赋值也没有类型检查,同时还允许隐式类型转换. 这些特征说明 JavaScript 属于弱类型 ...

  2. javascript显式类型的转换

    显式类型转换目的:为了使代码变得清晰易读,而做显示类型的转换常使用的函数:Boolean(),String(),Number()或Object()如:Nunber(5) //5String(true) ...

  3. C#中,使用显式类型转换(int)和Math.Round方法,将浮点数转换为整数的区别

    主要区别就是,显式类型转换(int)是将浮点数的整数部分截取出来,然后转换为整数,所以相当于是向下取整.而Math.Round方法是对浮点数进行四舍五入后,转换为整数. 新建一个.NET Core控制 ...

  4. JavaScript 隐式类型转换

    JavaScript 隐式类型转换 原文:https://blog.csdn.net/itcast_cn/article/details/82887895 · 1.1 隐式转换介绍 · 1.2 隐式转 ...

  5. C++进阶--显式类型转换(casting)

    //############################################################################ /* * 显式类型转换 * * 类型转换 ...

  6. C++显式类型转换

    C++显式类型转换 (注:本文例程改编自<C++ Primer>) 关于类型转换,C++保留了C语言中的类型转换方式,并提供了4中新的类型转换方式.<Effective C++> ...

  7. 有趣的JavaScript隐式类型转换

    JavaScript的数据类型是非常弱的(不然不会叫它做弱类型语言了)!在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一个字符串可以和数字相加.之所以不同的数据类型之间可以做运算,是因为 ...

  8. JavaScript隐式类型转换(详解 +,-,*,/,==)

    JavaScript 在 运算 或 比较 之前, 会自动进行隐式类型转换. 下面我们来仔细讲一讲 + - * / == 运算符经历了哪些过程. 类型转换 ECMAScript 运行时系统会在需要时从事 ...

  9. 四种JavaScript隐式类型转换的总结

    一般存在四种情况,JavaScript会对变量的数据类型进行转换. 目录 * if中的条件会被自动转为Boolean类型 * 会被转为false的数据 * 会被转为true的数据 * 参与+运算都会被 ...

随机推荐

  1. testng的使用

    TestNG教程 TestNG是一个测试框架,其灵感来自JUnit和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便. TestNG设计涵盖所有类型的测试:单元,功能,端到端,集成等, ...

  2. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  3. wincvs的“License for this product has expired”问题解决

    新入职的公司代码管理工具是CVS,使用wincvs作为客户端工具.今天发现执行login.logout.update等操作的时候总是报"License for this product ha ...

  4. 单幅图像的深度学习,对NYU数据集进行划分

    针对分割问题,官方已经划分好了:http://cs.nyu.edu/~silberman/projects/indoor_scene_seg_sup.html import numpy as np i ...

  5. 05 Activity知识

    1.Activity          >概念:活动面板   应用程序组件  可以绘制Ui界面  可以和用户进行交互     默认展示全屏  其他情况 界面比其他窗口小  悬浮在其他窗口上方   ...

  6. Oracle 总账年终结算流程

     1.Oracle 总账应用中年终结算流程包含在开启/关闭期间程序里.当用户开启新一年的第一个期间,开启/关闭期间程序中的"gloire" 流程会完成传送所有收入及支出(损益表 ...

  7. Troubleshooting Autoinvoice Import

    metalink :1089172.1 In this Document   Purpose   Troubleshooting Steps   AutoInvoice Execution Repor ...

  8. 《java入门第一季》之泛型引入

    泛型的引入: 首先看一段代码体会自动报错. // 看下面这个代码 自动报错 String[] strArray = new String[3]; strArray[0] = "hello&q ...

  9. 安卓手机与ROS通信遥控Gazebo中仿真机器人小车运动(ROS_indigo)

    首先,先列出需要用到的一些文件: Gazebo中机器人模型及说明: http://wiki.ros.org/grizzly_simulator https://github.com/g/grizzly ...

  10. Shell入门之概念

    1.一切皆是文件: 在bash Shell 中一切皆是文件,不管是我们认为的文本文件,还是那些文件夹的东西,在这里都是文件,Linux只管比特和字节流,而不关心他们最终组成了什么格式,这些工作交给在L ...