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 相关文章推荐
SWFObject Flash js调用类
Jul 08 Javascript
用Javascript同时提交多个Web表单的方法
Dec 26 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
Mar 13 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
Oct 20 Javascript
基于Jquery代码实现手风琴菜单
Nov 19 Javascript
jQuery日历插件datepicker用法详解
Mar 03 Javascript
jQuery实现图片局部放大镜效果
Mar 17 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 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
十大“创意”战术!
2020/03/04 星际争霸
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
PHP实现递归无限级分类
2015/10/22 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
Python设计密码强度校验程序
2020/07/30 Python
详解python变量与数据类型
2020/08/25 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
国际贸易专业推荐信
2013/11/15 职场文书
2014年元旦感言
2014/03/06 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
创业计划书之便利店
2019/09/05 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python