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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
JQuery toggle使用分析
Nov 16 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
微信小程序 判断手机号的实现代码
Apr 19 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 Javascript
JS异步函数队列功能实例分析
Nov 28 Javascript
js 提取某()特殊字符串长度的实例
Dec 06 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
Vuex入门到上手教程
Jun 20 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
一个简单实现多条件查询的例子
2006/10/09 PHP
PHP 字符串 小常识
2009/06/05 PHP
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
javascript代码加载优化方法
2011/01/30 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
Vue实现购物车功能
2017/04/27 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python中lambda()的用法
2017/11/16 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
英国高街电视:High Street TV
2018/05/22 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
大家访活动实施方案
2014/03/10 职场文书
房屋出租委托书格式
2014/09/23 职场文书
大学四年个人总结
2015/03/03 职场文书
防汛通知
2015/04/25 职场文书
聘用合同范本
2015/09/21 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
Python音乐爬虫完美绕过反爬
2021/08/30 Python
python编程项目中线上问题排查与解决
2021/11/01 Python