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 20 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
javascript递归回溯法解八皇后问题
Apr 22 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
React利用插件和不用插件实现双向绑定的方法详解
Jul 03 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
vue解决一个方法同时发送多个请求的问题
Sep 25 Javascript
JS面试题大坑之隐式类型转换实例代码
Oct 14 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
vue基于v-charts封装双向条形图的实现代码
Dec 09 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
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
php中yii框架实例用法
2020/12/22 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
js arguments.callee的应用代码
2009/05/07 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python程序封装为win32服务的方法
2021/03/07 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
总经理职责范文
2013/11/08 职场文书
法制宣传标语集锦
2014/06/25 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏