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版)
Nov 19 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
ie focus bug 解决方法
Sep 03 Javascript
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
window.location.href的用法(动态输出跳转)
Aug 09 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
js实现抽奖效果
Mar 27 Javascript
JS实现前端路由功能示例【原生路由】
May 29 Javascript
Javascript 解构赋值详情
Nov 17 Javascript
element tree树形组件回显数据问题解决
Aug 14 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
jquery tools之tooltip
2009/07/25 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
vue组件的写法汇总
2018/04/12 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
python第三方库学习笔记
2020/02/07 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
美国在线家具网站:GDFStudio
2021/03/13 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
安全施工标语
2014/06/07 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
干部年终考核评语
2015/01/04 职场文书
优秀团员个人总结
2015/02/26 职场文书
单方投资意向书
2015/05/11 职场文书
浅谈如何保证Mysql主从一致
2022/03/13 MySQL