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 相关文章推荐
动态加载iframe
Jun 16 Javascript
[原创]后缀就扩展名为js的文件是什么文件
Dec 06 Javascript
基于jQuery的获取标签名的代码
Jul 16 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
jQuery实现图片加载完成后改变图片大小的方法
Mar 29 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
数组Array的排序sort方法
Feb 17 Javascript
再谈Angular4 脏值检测(性能优化)
Apr 23 Javascript
vue的传参方式汇总和router使用技巧
May 22 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
基于Python的关键字监控及告警
2017/07/06 Python
Python微信库:itchat的用法详解
2017/08/14 Python
简单实现python数独游戏
2018/03/30 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
中间件分为哪几类
2016/09/18 面试题
班主任工作年限证明
2014/01/12 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python