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 遍历验证所有文本框的值
Aug 27 Javascript
将jQuery应用于login页面的问题及解决
Oct 17 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 Javascript
JS跨域问题详解
Nov 25 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
Jun 17 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
JavaScript数据结构学习之数组、栈与队列
May 02 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
详解vue 命名视图
Aug 14 Javascript
ES6函数和数组用法实例分析
May 23 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
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
Javascript的this详解
2019/03/23 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
创业计划书撰写原则
2014/01/25 职场文书
农村改厕实施方案
2014/03/22 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
团代会闭幕词
2015/01/28 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
vue3获取当前路由地址
2022/02/18 Vue.js
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server