JavaScript强制类型转换和隐式类型转换操作示例


Posted in Javascript onMay 01, 2019

本文实例讲述了JavaScript强制类型转换和隐式类型转换。分享给大家供大家参考,具体如下:

在JavaScript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。这些特征说明JavaScript属于弱类型的语言。

(1).转换为字符串

转换为字符串是应用程序中的常见操作,javascript提供了toString方法。多数的JavaScript宿主环境(比如Node.js和Chrome)都提供了全局函数toString; 与此同时Object.prototype也定义了toString方法,使得所有对象都拥有转换为字符串的能力。

例如将一个Number转换为String:

var n = 1;
n.toString(); // '1'

toString接受一个参数指定进制,默认为10. 可以利用这个参数生成包括字母和数字的随机字符串。“`

Math.random().toString(36).substr(2);

``random生成一个0到1的随机数,36进制的字符集为[0-9a-z](36个),`substr`用来截掉起始的"0."。 另外`Object.prototype.toString`可以用来检测JavaScript对象的类型:

var toString = Object.prototype.toString;
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
// Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
// 自定义类型
toString.call(new MyClass);  // [object Object]

转换为数字

在JavaScript中可以直接用parseInt和parseFloat。 例如:

var iNum1 = parseInt("red");  //返回 NaN
var fNum4 = parseFloat("11.22.44"); //返回 11.22

强制类型转换

强制类型转换在C++中有两种方式:用括号将类型声明在变量之前;或者调用构造函数。 在JavaScript中没有类型关键字(只有一个var来声明变量),因而只能调用构造函数:

Boolean(0) // => false - 零
Boolean(new object()) // => true - 对象
Number(undefined) // => NaN
Number(null) // => 0
String(null) // => “null”

隐式类型转换

隐式类型转换是最为隐蔽的地方,不加注意的话很容易在这一点上出错,对这一点的掌握也体现了JavaScript程序员经验。 JavaScript会自动转换表达式中对象的类型以完成表达式求值。

(1)四则运算

加法运算符+是双目运算符,只要其中一个是String类型,表达式的值便是一个String。

对于其他的四则运算,只有其中一个是Number类型,表达式的值便是一个Number。

对于非法字符的情况通常会返回NaN:

‘1' * ‘a' // => NaN,这是因为parseInt(a)值为NaN,1 * NaN 还是 NaN

(2)判断语句

判断语句中的判断条件需要是Boolean类型,所以条件表达式会被隐式转换为Boolean。 其转换规则同Boolean的构造函数。

var obj = {};
if(obj){
while(obj);
}

(3)Native代码调用**

JavaScript宿主环境都会提供大量的对象,它们往往不少通过JavaScript来实现的。 JavaScript给这些函数传入的参数也会进行隐式转换。例如BOM提供的alert方法接受String类型的参数:

alert({a: 1}); // => [object Object]

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
又一个小巧的图片预加载类
May 05 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
让你的博客飘雪花超出屏幕依然看得见
Jan 04 Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 Javascript
js中iframe调用父页面的方法
Oct 30 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
AngularJS之依赖注入模拟实现
Aug 19 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
electron 安装,调试,打包的具体使用
Nov 06 Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 Javascript
使用React代码动态生成栅格布局的方法
May 24 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
May 01 #Javascript
Vue.extend实现挂载到实例上的方法
May 01 #Javascript
JS html事件冒泡和事件捕获操作示例
May 01 #Javascript
JS实现的贪吃蛇游戏案例详解
May 01 #Javascript
javascript原型链学习记录之继承实现方式分析
May 01 #Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 #Javascript
微信小程序常见页面跳转操作简单示例
May 01 #Javascript
You might like
PHP异步调用socket实现代码
2012/01/12 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python实现快速排序的方法详解
2019/10/25 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python中的Cookie模块如何使用
2020/06/04 Python
Python脚本调试工具安装过程
2021/01/11 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
党建工作经验交流材料
2014/05/25 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android