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高级技巧分享
Feb 25 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
Aug 24 Javascript
js查看一个函数的执行时间实例代码
Sep 12 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
Jan 05 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
jquery uploadify如何取消已上传成功文件
Feb 08 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
Sep 27 Javascript
JSON数据中存在单个转义字符“\”的处理方法
Jul 11 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
Vue的生命周期一起来看看
Feb 24 Vue.js
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 缓冲的免费实现方法
2006/10/09 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
php实现算术验证码功能
2018/12/05 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
面包屑导航详解
2017/12/07 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
pytorch打印网络结构的实例
2019/08/19 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
为什么需要版本控制
2016/10/28 面试题
银行优秀员工事迹
2014/02/06 职场文书
植树节口号
2014/06/21 职场文书
召开会议通知范文
2015/04/15 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
一条 SQL 语句执行过程
2022/03/17 MySQL
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫