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 相关文章推荐
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
node.js中的fs.link方法使用说明
Dec 15 Javascript
javascript白色简洁计算器
May 04 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
JS作用域深度解析
Dec 29 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
深入浅析Vue 中 ref 的使用
Apr 29 Javascript
QT与javascript交互数据的实现
May 26 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
JavaScript类的写法
2016/09/17 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
Python实现股市信息下载的方法
2015/06/15 Python
python中正则的使用指南
2016/12/04 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
python suds访问webservice服务实现
2020/06/26 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
Ajax的工作原理
2015/12/04 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
简历自荐信
2013/12/02 职场文书
加油口号大全
2014/06/13 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python