开发手册HTMLCSSJavaScript
HTML手册CSS手册JavaScript手册JavaScriptHTML DOMjQueryJSONDHTMLJavaScript相关jQuery 属性操作 - addClass() 方法jQuery 属性操作 - attr() 方法jQuery 属性操作 - hasClass() 方法jQuery 属性操作 - removeAttr() 方法jQuery 属性操作 - removeClass() 方法jQuery 属性操作 - toggleClass() 方法jQuery 属性操作 - val() 方法jQuery CSS 操作 - css() 方法jQuery CSS 操作 - height() 方法jQuery CSS 操作 - offset() 方法jQuery CSS 操作 - offsetParent() 方法jQuery CSS 操作 - position() 方法jQuery CSS 操作 - scrollLeft() 方法jQuery CSS 操作 - scrollTop() 方法jQuery CSS 操作 - width() 方法jQuery 遍历 - clearQueue() 方法jQuery 数据 - data() 方法jQuery 遍历 - dequeue() 方法jQuery 遍历 - hasData() 方法jQuery 数据 - jQuery.data() 方法jQuery 遍历 - jQuery.dequeue() 方法jQuery 遍历 - jQuery.queue() 方法jQuery 数据 - jQuery.removeData() 方法jQuery 遍历 - queue() 方法jQuery 数据 - removeData() 方法jQuery DOM 元素方法 - get() 方法jQuery DOM 元素方法 - index() 方法jQuery DOM 元素方法 - size() 方法jQuery DOM 元素方法 - toArray() 方法jQuery 效果 - animate() 方法jQuery 效果 - clearQueue() 方法jQuery 效果 - fadeIn() 方法jQuery 效果 - fadeOut() 方法jQuery 效果 - fadeTo() 方法jQuery 效果 - hide() 方法jQuery 效果 - show() 方法jQuery 效果 - slideDown() 方法jQuery 效果 - slideToggle() 方法jQuery 效果 - slideUp() 方法jQuery 效果 - stop() 方法jQuery 效果 - toggle() 方法jQuery 事件 - bind() 方法jQuery 事件 - blur() 方法jQuery 事件 - change() 方法jQuery 事件 - click() 方法jQuery 事件 - dblclick() 方法jQuery 事件 - delegate() 方法jQuery 事件 - die() 方法jQuery 事件 - error() 方法jQuery 事件 - focus() 方法jQuery 事件 - isDefaultPrevented() 方法jQuery 事件 - keydown() 方法jQuery 事件 - keypress() 方法jQuery 事件 - keyup() 方法jQuery 事件 - live() 方法jQuery 事件 - load() 方法jQuery 事件 - mousedown() 方法jQuery 事件 - mouseenter() 方法jQuery 事件 - mouseleave() 方法jQuery 事件 - mousemove() 方法jQuery 事件 - mouseout() 方法jQuery 事件 - mouseover() 方法jQuery 事件 - mouseup() 方法jQuery 事件 - one() 方法jQuery 事件 - pageX 属性jQuery 事件 - pageY 属性jQuery 事件 - preventDefault() 方法jQuery 事件 - ready() 方法jQuery 事件 - resize() 方法jQuery 事件 - result 属性jQuery 事件 - scroll() 方法jQuery 事件 - select() 方法jQuery 事件 - submit() 方法jQuery 事件 - target 属性jQuery 事件 - timeStamp 属性jQuery 事件 - toggle() 方法jQuery 事件 - trigger() 方法jQuery 事件 - triggerHandler() 方法jQuery 事件 - type 属性jQuery 事件 - unbind() 方法jQuery 事件 - undelegate() 方法jQuery 事件 - unload 属性jQuery 事件 - which 属性jQuery 效果jQuery HTML 操作jQuery 参考手册 - 队列控制jQuery 文档操作 - after() 方法jQuery 文档操作 - append() 方法jQuery 文档操作 - appendTo() 方法jQuery 文档操作 - before() 方法jQuery 文档操作 - clone() 方法jQuery 文档操作 - detach() 方法jQuery 文档操作 - empty() 方法jQuery 文档操作 - html() 方法jQuery 文档操作 - insertAfter() 方法jQuery 文档操作 - insertBefore() 方法jQuery 文档操作 - prependTo() 方法jQuery 文档操作 - prepend() 方法jQuery 文档操作 - remove() 方法jQuery 文档操作 - replaceAll() 方法jQuery 文档操作 - replaceWith() 方法jQuery 文档操作 - text() 方法jQuery 文档操作 - unwrap() 方法jQuery 文档操作 - wrap() 方法jQuery 文档操作 - wrapAll() 方法jQuery 文档操作 - wrapInner() 方法jQuery context 属性jQuery jquery 属性jQuery jQuery.fx.interval 属性jQuery jQuery.fx.off 属性jQuery jQuery.support 属性jQuery length 属性jQuery * 选择器jQuery :animated 选择器jQuery [attribute] 选择器jQuery [attribute$=value] 选择器jQuery [attribute=value] 选择器jQuery [attribute!=value] 选择器jQuery . 选择器jQuery :contains 选择器jQuery element 选择器jQuery :empty 选择器jQuery :eq() 选择器jQuery :even 选择器jQuery :first 选择器jQuery :gt 选择器jQuery :header 选择器jQuery # 选择器jQuery :input 选择器jQuery :button 选择器jQuery :checkbox 选择器jQuery :checked 选择器jQuery :disabled 选择器jQuery :enabled 选择器jQuery :file 选择器jQuery :image 选择器jQuery :password 选择器jQuery :radio 选择器jQuery :reset 选择器jQuery :selected 选择器jQuery :submit 选择器jQuery :text 选择器jQuery :last 选择器jQuery :lt 选择器jQuery :odd 选择器jQuery :visible 选择器jQuery 遍历 - add() 方法jQuery 遍历 - andSelf() 方法jQuery 遍历 - children() 方法jQuery 遍历 - closest() 方法jQuery 遍历 - contents() 方法jQuery 遍历 - each() 方法jQuery 遍历 - end() 方法jQuery 遍历 - eq() 方法jQuery 遍历 - filter() 方法jQuery 遍历 - find() 方法jQuery 遍历 - first() 方法jQuery 遍历 - has() 方法jQuery 遍历 - is() 方法jQuery 遍历 - last() 方法jQuery 遍历 - map() 方法jQuery 遍历 - next() 方法jQuery 遍历 - nextAll() 方法jQuery 遍历 - nextUntil() 方法jQuery 遍历 - not() 方法jQuery 遍历 - offsetParent() 方法jQuery 遍历 - parent() 方法jQuery 遍历 - parents() 方法jQuery 遍历 - parentsUntil() 方法jQuery 遍历 - prev() 方法jQuery 遍历 - prevAll() 方法jQuery 遍历 - prevUntil() 方法jQuery 遍历 - siblings() 方法jQuery 遍历 - slice() 方法jQuery Mobile 教程ECMAScript 函数概述ECMAScript arguments 对象ECMAScript 闭包(closure)ECMAScript Function 对象(类)JavaScript 的历史JavaScript 实现ECMAScript 关键字ECMAScript 定义类或对象ECMAScript 修改对象ECMAScript 面向对象技术ECMAScript 对象作用域ECMAScript 对象类型ECMAScript 对象应用ECMAScript 加性运算符ECMAScript 赋值运算符ECMAScript 位运算符ECMAScript Boolean 运算符ECMAScript 逗号运算符ECMAScript 条件运算符ECMAScript 等性运算符ECMAScript 乘性运算符ECMAScript 关系运算符ECMAScript 一元运算符ECMAScript 原始类型ECMAScript 引用类型ECMAScript 保留字ECMAScript break 和 continue 语句ECMAScript if 语句ECMAScript 迭代语句ECMAScript 标签语句ECMAScript switch 语句ECMAScript with 语句ECMAScript 语法ECMAScript 类型转换ECMAScript 原始值和引用值ECMAScript 变量HTML DOM Anchor 对象HTML DOM Area 对象HTML DOM Audio 对象HTML DOM Base 对象HTML DOM Blockquote 对象HTML DOM Body 对象HTML DOM Button 对象HTML DOM Canvas 对象HTML DOM Checkbox 对象HTML DOM Column 对象HTML DOM Color 对象HTML DOM Datalist 对象HTML DOM Input Date 对象HTML DOM Datetime Local 对象HTML DOM Datetime 对象HTML DOM Del 对象HTML DOM Details 对象HTML DOM Dialog 对象HTML DOM Document 对象HTML DOM Email 对象HTML DOM Embed 对象HTML DOM Event 对象HTML DOM Fieldset 对象HTML DOM FileUpload 对象HTML DOM Form 对象HTML DOM Frame 对象HTML DOM Frameset 对象HTML DOM Hidden 对象History 对象HTML DOM IFrame 对象HTML DOM Image 对象HTML DOM Input Image 对象HTML DOM Input Time 对象HTML DOM Ins 对象HTML DOM Keygen 对象HTML DOM Legend 对象HTML DOM Li 对象HTML DOM Link 对象Location 对象HTML DOM Map 对象HTML DOM MenuItem 对象HTML DOM Meta 对象HTML DOM Meter 对象HTML DOM Month 对象Navigator 对象HTML DOM Number 对象HTML DOM Object 对象HTML DOM Ol 对象HTML DOM OptionGroup 对象HTML DOM Option 对象HTML DOM Parameter 对象HTML DOM Password 对象HTML DOM Progress 对象HTML DOM Button 对象HTML DOM Quote 对象HTML DOM Radio 对象HTML DOM Input Range 对象HTML DOM Reset 对象Screen 对象HTML DOM Script 对象HTML DOM Input Search 对象HTML DOM Select 对象HTML DOM Source 对象HTML DOM Style 对象HTML DOM Submit 对象HTML DOM Table 对象HTML DOM TableCell 对象HTML DOM TableHeader 对象HTML DOM TableRow 对象HTML DOM Text 对象HTML DOM Textarea 对象HTML DOM Time 对象HTML DOM Title 对象HTML DOM Track 对象HTML DOM Input URL 对象HTML DOM Video 对象HTML DOM Input Week 对象Window 对象JavaScript eval() 函数JavaScript Array 对象JavaScript Boolean 对象JavaScript Date 对象JavaScript 全局对象JavaScript Math 对象JavaScript Number 对象JavaScript RegExp 对象JavaScript String 对象HTML DOM getContext() 方法多媒体教程 - 在 Web 上使用图像多媒体教程 - GIF 图像多媒体教程 - JPEG 图像PHP 教程SVG 教程HTTP 方法:GET 对比 POST什么是超文本?TCP/IP 教程VBScript 教程万维网联盟(W3C)教程XML 教程XML DOM 加载函数XML DOM 教程XML DOM 参考手册

ECMAScript 类型转换

所有程序设计语言最重要的特征之一是具有进行类型转换的能力。

ECMAScript 给开发者提供了大量简单的类型转换方法。

大部分类型具有进行简单转换的方法,还有几个全局方法可以用于更复杂的转换。无论哪种情况,在 ECMAScript 中,类型转换都是简短的一步操作。

转换成字符串

ECMAScript 的 Boolean 值、数字和字符串的原始值的有趣之处在于它们是伪对象,这意味着它们实际上具有属性和方法。

例如,要获得字符串的长度,可以采用下面的代码:

var sColor = "red";
alert(sColor.length);	//输出 "3"

尽管 "red" 是原始类型的字符串,它仍然具有属性 length,用于存放字符串的大小。

总而言之,3 种主要的原始类型 Boolean 值、数字和字符串都有 toString() 方法,可以把它们的值转换成字符串。

提示:您也许会问,“字符串还有 toString() 方法吗,这不是多余吗?”是的,的确如此,不过 ECMAScript 定义所有对象都有 toString() 方法,无论它是伪对象,还是真对象。因为 String 类型属于伪对象,所以它一定有 toString() 方法。

Boolean 类型的 toString() 方法只是输出 "true" 或 "false",结果由变量的值决定:

var bFound = false;
alert(bFound.toString());	//输出 "false"

Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式基模式。采用默认模式,toString() 方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学计数法),如下所示:

var iNum1 = 10;
var iNum2 = 10.0;
alert(iNum1.toString());	//输出 "10"
alert(iNum2.toString());	//输出 "10"

注释:在默认模式中,无论最初采用什么表示法声明数字,Number 类型的 toString() 方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。

采用 Number 类型的 toString() 方法的基模式,可以用不同的输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。

只是要转换成的基数的另一种加法而已,它是 toString() 方法的参数:

var iNum = 10;
alert(iNum.toString(2));	//输出 "1010"
alert(iNum.toString(8));	//输出 "12"
alert(iNum.toString(16));	//输出 "A"

在前面的示例中,以 3 种不同的形式输出了数字 10,即二进制形式、八进制形式和十六进制形式。HTML 采用十六进制表示每种颜色,在 HTML 中处理数字时这种功能非常有用。

注释:对数字调用 toString(10) 与调用 toString() 相同,它们返回的都是该数字的十进制形式。

参阅:

请参阅 JavaScript 参考手册提供的有关 toString() 方法的详细信息:

转换成数字

ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat()。

正如您可能想到的,前者把值转换成整数,后者把值转换成浮点数。只有对 String 类型调用这些方法,它们才能正确运行;对其他类型返回的都是 NaN。

parseInt()

在判断字符串是否是数字值前,parseInt() 和 parseFloat() 都会仔细分析该字符串。

parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,此时 parseInt() 将把该字符之前的字符串转换成数字。

例如,如果要把字符串 "12345red" 转换成整数,那么 parseInt() 将返回 12345,因为当它检查到字符 r 时,就会停止检测过程。

字符串中包含的数字字面量会被正确转换为数字,比如 "0xA" 会被正确转换为数字 10。不过,字符串 "22.5" 将被转换成 22,因为对于整数来说,小数点是无效字符。

一些示例如下:

var iNum1 = parseInt("12345red");	//返回 12345
var iNum1 = parseInt("0xA");	//返回 10
var iNum1 = parseInt("56.9");	//返回 56
var iNum1 = parseInt("red");	//返回 NaN

parseInt() 方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由 parseInt() 方法的第二个参数指定的,所以要解析十六进制的值,需如下调用 parseInt() 方法:

var iNum1 = parseInt("AF", 16);	//返回 175

当然,对二进制、八进制甚至十进制(默认模式),都可以这样调用 parseInt() 方法:

var iNum1 = parseInt("10", 2);	//返回 2
var iNum2 = parseInt("10", 8);	//返回 8
var iNum3 = parseInt("10", 10);	//返回 10

如果十进制数包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值。例如:

var iNum1 = parseInt("010");	//返回 8
var iNum2 = parseInt("010", 8);	//返回 8
var iNum3 = parseInt("010", 10);	//返回 10

在这段代码中,两行代码都把字符 "010" 解析成一个数字。第一行代码把这个字符串看作八进制的值,解析它的方式与第二行代码(声明基数为 8)相同。最后一行代码声明基数为 10,所以 iNum3 最后等于 10。

参阅

请参阅 JavaScript 参考手册提供的有关 parseInt() 方法的详细信息:parseInt()

parseFloat()

parseFloat() 方法与 parseInt() 方法的处理方式相似,从位置 0 开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前的字符串转换成整数。

不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的。parseFloat() 会把这个小数点之前的字符转换成数字。这意味着字符串 "11.22.33" 将被解析成 11.22。

使用 parseFloat() 方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不是用八进制或十六进制。该方法会忽略前导 0,所以八进制数 0102 将被解析为 102。对于十六进制数 0xA,该方法将返回 NaN,因为在浮点数中,x 不是有效字符。(注释:经测试,具体的浏览器实现会返回 0,而不是 NaN。)

此外,parseFloat() 方法也没有基模式。

下面是使用 parseFloat() 方法的一些示例:

var fNum1 = parseFloat("12345red");	//返回 12345
var fNum2 = parseFloat("0xA");	//返回 NaN
var fNum3 = parseFloat("11.2");	//返回 11.2
var fNum4 = parseFloat("11.22.33");	//返回 11.22
var fNum5 = parseFloat("0102");	//返回 102
var fNum1 = parseFloat("red");	//返回 NaN

亲自试一试

参阅

请参阅 JavaScript 参考手册提供的有关 parseFloat() 方法的详细信息:parseFloat()

强制类型转换

您还可以使用强制类型转换(type casting)来处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。

编者注:cast 有“铸造”之意,很贴合“强制转换”的意思。

ECMAScript 中可用的 3 种强制类型转换如下:

  • Boolean(value) - 把给定的值转换成 Boolean 型;
  • Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
  • String(value) - 把给定的值转换成字符串;

用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。

Boolean() 函数

当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。

可以用下面的代码测试 Boolean 型的强制类型转换:

var b1 = Boolean("");		//false - 空字符串
var b2 = Boolean("hello");		//true - 非空字符串
var b1 = Boolean(50);		//true - 非零数字
var b1 = Boolean(null);		//false - null
var b1 = Boolean(0);		//false - 零
var b1 = Boolean(new object());	//true - 对象

Number() 函数

Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。

还记得吗,parseInt() 和 parseFloat() 方法只转换第一个无效字符之前的字符串,因此 "1.2.3" 将分别被转换为 "1" 和 "1.2"。

用 Number() 进行强制类型转换,"1.2.3" 将返回 NaN,因为整个字符串值不能转换成数字。如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。

下表说明了对不同的值调用 Number() 方法会发生的情况:

用法 结果
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number("1.2") 1.2
Number("12") 12
Number("1.2.3") NaN
Number(new object()) NaN
Number(50) 50

String() 函数

最后一种强制类型转换方法 String() 是最简单的,因为它可把任何值转换成字符串。

要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString() 方法,即把 12 转换成 "12",把 true 转换成 "true",把 false 转换成 "false",以此类推。

强制转换成字符串和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制类型转换可以生成字符串而不引发错误:

var s1 = String(null);	//"null"
var oNull = null;
var s2 = oNull.toString();	//会引发错误

在处理 ECMAScript 这样的弱类型语言时,强制类型转换非常有用,不过应该确保使用值的正确。

关于千图| 赞助千图 |千图首页   Copyright2014千图网   沪ICP备10011451号-6   用时:0.0231秒

千图网提示