作为动态语言,JavaScript的类型转换总是在默默地进行着,不为很多人所知。然而,理解好JavaScript的类型转换是理解JavaScript的基础课。其转换机制主要如下:
1)undefined
①转换成 字符串
undefined并不是javascript的保留字,它只是一个初始值为undefined的全局变量,你可以为它定义一个值(当然我不建议你这么做)在遇到字符串场合时,undefined会被自动转换成'undefined';
view plaincopy to clipboardprint?
var test = undefined + '';
alert(typeof test); //test的值为'undefined',类型为string
undefined = 'test';
alert(undefined); //undefined将被定义成字符串'test'
var test = undefined + '';
alert(typeof test); //test的值为'undefined',类型为string
undefined = 'test';
alert(undefined); //undefined将被定义成字符串'test'
②转换成 数字
undefined在数字场合将被转换成NaN
view plaincopy to clipboardprint?
var test = undefined - 0;
alert(test) //将打印出'NaN',其实这里数字NaN又被转换成了字符串'NaN'
var test = undefined - 0;
alert(test) //将打印出'NaN',其实这里数字NaN又被转换成了字符串'NaN'
③转换成布尔类型
undefined在布尔类型的场合将被转换成false,因此你可以用下面的语句判断一个对象是否存在
view plaincopy to clipboardprint?
var test;
if(!test){
test = 'test';
}
var test;
if(!test){
test = 'test';
}
当然,也许有人喜欢把让类型转换成为显示的,你可以用下面的方法把undefined转换成boolean类型
view plaincopy to clipboardprint?
var test;
alert(!!test); //这里也包含了布尔到字符串的转换(以下不再说明)
var test;
alert(!!test); //这里也包含了布尔到字符串的转换(以下不再说明)
④转换成 对象
undefined在对象场合会转换成Error对象
2)null
null基本与undefined相同,它是JavaScript的关键字,你可以把它理解成对象类型的一个特殊值,它是一个独一无二的值。很多人并不区分对象为undefined和null的区别,实际上他们是有本质的区别的。然而,
alert(null==undefined);
alert(null==undefined);
将打印出true,从实际应用中,两者都表示缺少值,这正是我们想要的。如果要区分它们,可以用 === 运算符或 typeof 运算符。
①转换成 字符串
null在字符串场合被转换成字符串'null'
alert(null); //将打印出'null'
alert(null); //将打印出'null'
②转换成 数字
null在数字场合被转换成 0,这样你便很容易发现,下面的语句将输出Infinity
var test = 2/null;
alert(test);
var test = 2/null;
alert(test);
③转换成 布尔型
null同undefined一样,在布尔环境下被转换成false
if(null || undefined){
alert("This will not be execute!");
}
if(null || undefined){
alert("This will not be execute!");
}
④转换成 对象
null在对象环境中被转换成 Error 对象。
3)非空字符串,如 'abc',"Test"
①转换成数字
非空字符串能被动态的转换成对应的数值或者NaN
var a = '1.23' - 0,
b = 'abc' - 0,
c = '12ab' - 0,
d = '-12' - 0,
e = '1.23.4' - 0;
alert(a); //结果: 1.23
alert(b); //结果: NaN
alert(c); //结果: NaN
alert(d); //结果: -12
alert(e); //结果: NaN
var a = '1.23' - 0,
b = 'abc' - 0,
c = '12ab' - 0,
d = '-12' - 0,
e = '1.23.4' - 0;
alert(a); //结果: 1.23
alert(b); //结果: NaN
alert(c); //结果: NaN
alert(d); //结果: -12
alert(e); //结果: NaN
②转换成布尔型
在布尔环境中,非空字符串会被自动转换成true
alert(!!'Test'); //打印的是true
alert(!!'Test'); //打印的是true
③转换成对象
字符串是JavaScript的基本类型,在对象场合时,其会被转换成String对象。
4)空字符串
空字符串只是在数字场合会被转换成 0 ,在布尔场合被转换成 false 。其它的处理与非空字符串没有什么区别。
5)数值 (包括 0 NaN 无穷 负无穷 任意其它数字)
①转换成 字符串
字符串场合它们将依次被转换成 '0' 'NaN' 'Infinity' '-Infinity' 数字的字符串值
②转换成 对象
数值会被转换成其对应的封装类型,也就是Number对象。
③转换成 布尔
只有 0 和 NaN 将被认为是false,其它值会被转换成true。因为有这种转换机制在,你可以像写C一样写下面的代码
var a,b;
if(a=1){
b = 2;
}
alert(b); //b的值为2 当条件里为 a=0 时b便成了undefined
var a,b;
if(a=1){
b = 2;
}
alert(b); //b的值为2 当条件里为 a=0 时b便成了undefined
但是这并不同于C,在C99标准前,是没有所谓boolean类型的。C中if语句里是直接接受int型的,而JavaScript则做了一次类型转换。
6)布尔类型 (true 和 false)
①转换成字符串
像很多语言比如java一样,它们会被转换成对应的字符串即'true'和'false'
②转换成数字
你可以像理解C语言一样记忆它,true是1,而false则是0。下面的例子可以帮你理解,但我保证,它们是没有太多实际意义的
alert(true-2); //没错,结果是-1
alert(null/true); //这个运算有意义吗?呵呵,但是它确实显示的是 0
alert(null-0==false-0); //很有趣吧,它打印出什么呢?
alert(true-2); //没错,结果是-1
alert(null/true); //这个运算有意义吗?呵呵,但是它确实显示的是 0
alert(null-0==false-0); //很有趣吧,它打印出什么呢?
③转换成对象
这个我想我不用说了,像字符串转换成String对象,数字转换成Number对象一样,布尔值会被转换成布尔对象,也就是Boolean对象
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ScAREcrOw_ss/archive/2010/06/08/5654391.aspx
分享到:
相关推荐
parseInt()-将字符串转化为整型 parseFloat()-将字符串转化为浮点数 ...String()-函数能够将任何类型的值转换为字符串 tostring()-将数字转换为进制 Boolean()-转换为Boolean值 toFixed-()将数值转换为字符串
Javascript中的变量同样支持自由类型转换成为适用(或者要求)的内容以便于使用。 弱类型的Javascript不会按照程序员的愿望从实际的变量类型到所需要的数据类型转换,例如一个非常常见的错误,在浏览器脚本中,从表单...
主要介绍了javascript类型转换示例,需要的朋友可以参考下
主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧
最近群里有人发了下面这题: 实现一个函数,运算结果可以满足如下预期结果: ...在 javascript 中,函数是一等公民,允许函数作为参数或者返回值传递。 得到了下面这个解法: function add() { var args =
其实啥类型转换啊,操作符优先级啊,这些东西都是最最基本的。犀牛书上有详细的介绍。但我很少去翻犀牛书的前5章。。。 比如说优先级那块儿,很多书都教育我们,“不用去背诵优先级顺序,不确定的话,加括号就行了。...
本文实例讲述了Javascript 类型转换、封闭函数及常见内置对象。分享给大家供大家参考,具体如下: Javascript组成 1、ECMAscript javascript的语法(变量、函数、循环语句等语法) 2、DOM 文档对象模型 操作html和...
javascript是弱类型的语言,所以强制类型转换还是比较重要的,下面看一下它的几个强制转换的函数
主要介绍了javascript类型转换的使用方法,包括转换为字符串、转换为数字、转换为布尔值、转换为对象使用方法,大家参考使用吧
javascript各种变量类型之间的转换
类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,接着是强制性的显式类型转换,最后如何将基本数据类型提升为对象。 JavaScript的数据类型分为基本数据类型和复合数据类型。复合数据类型主要有对象、...
对初学者的最全数据类型转换,javascript几种基本的数据类型转换,有数值类型,字符串类型及布尔类型
JavaScript隐式类型转换_.docx
JavaScript 类型转换 Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。 JavaScript 数据类型 在 JavaScript 中有 6 种不同的数据类型: string number boolean object function ...
JavaScript类型转换方法及需要注意的问题,在js中经常需要对数据类型的转换操作,需要的朋友可以参考下。
基本涵盖了常用的js数据类型之间互相转换的方法和途径,简单易懂