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 相关文章推荐
了解jQuery技巧来提高你的代码
Jan 08 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
Apr 12 Javascript
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 Javascript
基于javascript简单实现对身份证校验
Jan 25 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
Vue.js中的图片引用路径的方式
Jul 28 Javascript
Vue与Node.js通过socket.io通信的示例代码
Jul 25 Javascript
关于vue的npm run dev和npm run build的区别介绍
Jan 14 Javascript
Javascript的this详解
Mar 23 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 Javascript
原生JS实现飞机大战小游戏
Jun 09 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
配置支持SSI
2006/11/25 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
浅谈Vue.js
2017/03/02 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
canvas使用注意点总结
2013/07/19 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
Exception类的常用方法
2012/06/16 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
应届生新闻编辑求职信
2013/11/19 职场文书
财务副总经理工作职责
2013/11/25 职场文书
产品开发计划书
2014/04/27 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书