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  Error 对象 错误处理
May 18 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
javascript时间函数基础介绍
Mar 28 Javascript
JSP跨iframe如何传递参数实现代码
Sep 21 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
使用vue + less 实现简单换肤功能的示例
Feb 21 Javascript
Angular5集成eventbus的示例代码
Jul 19 Javascript
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
小程序测试后台服务的方法(ngrok)
Mar 08 Javascript
JavaScript实现五子棋小游戏
Oct 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巧获服务器端信息
2006/12/06 PHP
PHP之变量、常量学习笔记
2008/03/27 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
php学习笔记之基础知识
2014/11/08 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
Laravel实现表单提交
2017/05/07 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
js实现无缝滚动图
2017/02/22 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
python爬取51job中hr的邮箱
2016/05/14 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
python 实现视频 图像帧提取
2019/12/10 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL