使弱类型的语言JavaScript变强势


Posted in Javascript onJune 22, 2009

弱类型的Javascript不会按照程序员的愿望从实际的变量类型到所需要的数据类型转换,例如一个非常常见的错误,在浏览器脚本中,从表单控件中获取用户将要输入的一个数值类型的变量与另一个数值变量的和.因为变量类型在表单控件中是字符串类型(计时字符串序列包含一个数字)这种尝试将会添加那个字符串到变量,即使这些值碰巧是一些数字,结果在第二个变量将会被转换为字符串类型,在最后只会把从表单控件中得到的变量添加到第一个字符串末尾。

所以强制类型转换还是比较重要的,下面看一下它的几个强制转换的函数:

1. Boolean(value):把值转换成Boolean类型;

2. Nnumber(value):把值转换成数字(整型或浮点数);

3. String(value):把值转换成字符串。

我们先来看Boolean():在要转换的值为“至少有一字符的字符串”、“非0的数字”或“对象”,那么Boolean()将返回true,如果要转换的值为“空字符串”、“数字0”、“undefined”,“null”这些话,那么Boolean()会返回false。你可以用以下代码来测试

以下为引用的内容:   var t1 = Boolean("");//返回false,空字符串var t2 = Boolean("s");//返回true,非空字符串var t3 = Boolean(0);//返回false,数字0var t3 = Boolean(1),t4 = Boolean(-1);//返回true,非0数字var t5 = Boolean(null),t6 = Boolean(undefined);//返回falsevar t7 = Boolean(new Object());//返回true,对象

再来看看Number():Number()与parseInt()和parseFloat()类似,它们区别在于Number()转换是整个值,而parseInt()和parseFloat()则可以只转换开头的数字部分,例如:Number("1.2.3"),Number("123abc")会返回NaN,而parseInt("1.2.3")返回1、parseInt("123abc")返回123、parseFloat("1.2.3")返回1.2、parseFloat("123abc")返回123。Number()会先判断要转换的值能否被完整的转换,然后再判断是调用parseInt()或parseFloat()。下面列了一些值调用Number()之后的结果:

以下为引用的内容: Number(false)  0Number(true)  1Number(undefined)  NaNNumber(null)  0Number("1.2")  1.2 Number("12")  12Number("1.2.3")  NaNNumber(new Object())  NaNNumber(123)  123

最后是String():这个以比较简单了,它可以把所有类型的数据转换成字符串,如:String(false)---"false"、String(1)---"1"。它和toString()方法有些不同,区别在于:

以下为引用的内容:   var t1 = null;var t2 = String(t1);//t2的值 "null"var t3 = t1.toString();//这里会报错var t4;var t5 = String(t4);//t5的值 "undefined
Javascript 相关文章推荐
jQuery使用手册之一
Mar 24 Javascript
JObj预览一个JS的框架
Mar 13 Javascript
iframe 异步加载技术及性能分析
Jul 19 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
Jun 04 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
Bootstrap4 gulp 配置详解
Jan 06 Javascript
详解Angular Karma测试的持续集成实践
Nov 15 Javascript
Javascript 代码也可以变得优美的实现方法
Jun 22 #Javascript
PNG背景在不同浏览器下的应用
Jun 22 #Javascript
JavaScript 新手24条实用建议[TUTS+]
Jun 21 #Javascript
ExtJS扩展 垂直tabLayout实现代码
Jun 21 #Javascript
javascript 异常处理使用总结
Jun 21 #Javascript
js 匿名调用实现代码
Jun 19 #Javascript
JS 拼图游戏 面向对象,注释完整。
Jun 18 #Javascript
You might like
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
python之信息加密题目详解
2019/06/26 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
python把一个字符串切开的实例方法
2020/09/27 Python
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
四川成都导游欢迎词
2014/01/18 职场文书
在校大学生个人的自我评价
2014/02/13 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
Python正则表达式中flags参数的实例详解
2022/04/01 Python