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 相关文章推荐
javascript 页面只自动刷新一次
Jul 10 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
Nov 11 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
javascript去除字符串左右两端的空格
Feb 05 Javascript
JavaScript Length 属性的总结
Nov 02 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
Jul 17 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
JavaScript实现身份证验证代码实例
Aug 26 Javascript
JavaScript遍历数组的方法代码实例
Jan 14 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
4.与数据库的连接
2006/10/09 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
手机促销活动方案
2014/02/05 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
素质教育标语
2014/06/27 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2014年保密工作总结
2014/11/22 职场文书
投标承诺函范文
2015/01/21 职场文书
研究生个人学年总结
2015/02/14 职场文书