一、类型转换的方法和应该注意的问题:
1.转换为布尔型:
(1)用两次非运算(!):
!!5 ==> true
(2)用布尔型的构造函数:
new Boolean(5) == > true
值转换为布尔类型为false:
0,+0,-0,NaN,""(空字符串),undefined,null
除上面的值其他值在转换以后为true,需要特别提到的是:
"0",new Object(),function(){}
2.转换为字符串类型:
(1)加上空字符串"":
123 + "" = "123"
(2)用字符串构造函数:
new String(123) = "123".
需要特别注意的转化:
+0 ==> "0"
-0 ==> "0"
-Infinity ==>"-Infinity"
+Infinity ==>"+Infinity"
NaN ==> "NaN"
undefined ==> "undefined"
null ==> "null"
new Object() ==> "[object Object]"
function(){} ==> "function(){}"
3.转换为数值型:
(1) 取正(+), 减零 (-0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值)。
+"123" = 123
+true = 1
(2)用构造函数Number();
new Number("123") = 123
几个需要特别注意的转化:
""(空字符串) ==> 0
"010" ==> 10
"0x10"(16进制) ==> 16
"-010" ==> -10
"-0x10" ==> NaN
undefined ==> NaN
null ==> 0
true ==> 1
false ==> 0
new Object() ==> NaN
new function(){} ==> NaN
二、隐式类型转换:
(1)二元加法运算(+):如果两个操作数中有一个是String类型,将把两个操作数转换为String类型再相加。
如果两个操作数中没有字符串类型,那么将把两个操作数转换为数值类型再做运算。
举例:
"123"+123 = "123123";
123+123 = 246
true + true = 2
true + undefined = NaN (因为undefined转换为数值为NaN,所有结果为NaN)
true + null = 1 (null转换为数字是0)
"123" + null = "123null" (包含字符串将转化为字符串相加)
"123" + undefined = "123undefined" (undefined同样适用)
1 + 2 + "123" = "3123" (1+2是首先按照数值型计算的)
(2)二元减乘除运算(-*/):因为只有数值类型才有 - * / 运算,所以会先将两个操作数转换为数值型再做运算。
"123"-123 = 0
(3)一元取正(+),取负运算符(-):取正或者取负都是针对数值型的运算,所以会将操作数转换为数值型再做运算。
+"123" = 123
-"123" = -123
+"123e" = NaN
+"123f" = NaN
+"123e-2" = 1.23
(4)一元非(!)运算符:非运算符需要将操作数转化为布尔类型。
!"123" = false
!!"123" = true
!123 = false
!!123 = true
(5)逻辑运算符(&&)和(||):
在&&或者||的两侧被判断的时候会被转为布尔类型进行判断,
但是我在测试的时候却发现一个有趣的事情。
&&运算符:如果有一个项为false,那么表达式返回false,如果所有的项都不为false,那么表达式返回最右边一个项的原始值。
举例:
123 && 23 && 45 返回 45,而不是我们想象中的true.
所以如果有 123 && 23 == true 那么应该是false。
至于if(123 && 23) 认为是true那应该是把23转换为布尔类型了。
||运算符:
对 || 测试的结果也和我想象的不一样,|| 返回第一个转换以后不为false的值,如果都为false,它将返回最后一个为false的值(未进行类型转化之前的值)。
举例:
123 || 23 返回 123,而不是想象中的true.
false || null 返回null, 而不是想象中的false。
三、类型转换函数
1.parseFloat转换为浮点数:
字符解析函数获取每一个字符直到遇到不属于数值的字符,然后返回它已获取的数值.
几个需要特别注意的:
""(空字符串) ==> NaN
"123e-2" == > 1.23 (科学计算法是可以识别的)
"010" ==> 10 (8进制不能识别)
"0x10"==> 0 (16进制不识别)
"-010" ==> -10
null,undefined,true,false,new Object(),function(){} ==> NaN
2.parseInt转换为有符号整数:
跟parseFloat相似,但是他会把小数位舍掉(注意不是四舍五入,是完全舍弃,跟Math.floor处理方式一样),而且他可以识别八进制和16进制表示方式:
123e-2 == > 1
"123e-2" ==> 123
"010" == > 8
"0x10" ==> 16
"-010" == > -8
"-0x10" ==> -16
null,undefined,true,false,new Object(),function(){},-Infinity +Infinity NaN ==> NaN
3.三个取整函数的区别:
(1)Math.ceil():“天花板”,很形象吧?就是取大于等于参数的最小整数。
8.7 == > 9
-8.7==> -8
(2)Math.floor():"地板",取小于等于参数的最小整数。
8.7 ==> 8
-8.7 ==> -9
(3)Math.round():"四舍五入"取整数。
本文来自:http://www.crazycoder.cn/Javascript/Article104940.html
分享到:
相关推荐
本文实例讲述了JavaScript强制类型转换和隐式类型转换。分享给大家供大家参考,具体如下: 在JavaScript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。这些特征说明...
强制类型转换在JavaScript中是常见的,主要有三种主要的转换函数:`Boolean()`, `Number()`, 和 `String()`。 1. **Boolean(value)**: 这个函数将任何值转换为布尔类型(`true` 或 `false`)。通常,非零数字、非空...
强制类型转换是JavaScript语言中的一个重要概念,它涉及到数据类型在运行时的自动或显式转换。理解这个概念对于任何使用JavaScript的开发者来说都是必要的,因为这涉及到代码的正确执行以及避免可能的bug。 首先,...
这种转换不依赖于开发者明确的类型转换命令,而是由JavaScript引擎根据语言的规则在背后完成。 JavaScript数据类型分为基本类型和引用类型。基本类型包括null、undefined、boolean、string、number六种,而object则...
在TypeScript中,有两种主要的类型转换方式:自动类型提升(隐式转换)和强制类型转换(显式转换)。本文主要关注的是强制类型转换。 在TypeScript中,强制类型转换有两种常见的方式:类型断言(Type Assertion)和...
类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,接着是强制性的显式类型转换,最后如何将基本数据类型提升为对象。 JavaScript的数据类型分为基本数据类型和复合数据类型。复合数据类型主要有对象、...
自动类型转换通常基于强制类型转换,当JavaScript预期某个位置应该是布尔值、字符串或数值时,就会自动调用相应的强制类型转换函数。例如: - 在if语句的条件部分,JavaScript会自动将非布尔值的参数转换为布尔值。...
JavaScript中的强制类型转换是编程过程中常见且重要的概念,主要涉及Boolean、Number和String三种类型。在JavaScript中,这些类型的转换规则具有一定的复杂性,因为语言的动态类型特性使得在某些场景下,不同类型...
由于JavaScript的弱类型特性,有时会导致意料之外的类型转换,尤其是涉及到数据类型的运算时。以下我们将详细介绍JavaScript中的类型转换方法。 1. **转换到布尔类型(Boolean Conversion)** - 在JavaScript中,...
本文主要讨论了 Java 中的三种类型转换:强制类型转换、自动升级类型转换以及表达式的升级类型转换,同时也提到了自动包装和解包的概念。 1. 强制类型转换: 强制类型转换是程序员明确指定将一个数据类型转换为另...
- **强制类型转换(向下转型)**:从高级数据类型转换为低级数据类型需要使用强制类型转换,但需要注意可能会导致数据丢失或溢出。例如,从double转换为int时,小数部分会被舍去。 ```java double d = 10.5; ...
JavaScript(简称JS)是一种高级的、解释型的编程语言,它在很多情况下会进行强制类型转换,特别是在if语句中,JavaScript会自动将判断条件的值转换为布尔值。在if语句中进行强制类型转换时,主要有两种最常见的方式...
掌握类型转换的知识点对于编写健壮的JavaScript代码至关重要,能够帮助开发者避免很多常见错误,如类型强制转换导致的逻辑错误。通过上面介绍的函数和方法,可以灵活地在不同数据类型间进行转换,从而满足各种编程...
JavaScript是一种动态类型语言,它的数据类型转换在编程中扮演着重要的角色。在这份"JavaScript程序设计课件:数据类型转换"中,主要讲解了如何在JavaScript中进行数据类型的转换,主要包括获取数据类型的方法以及三...
JavaScript显式类型转换是一种编程技巧,用于将变量从一种类型强制转换为另一种类型,主要通过调用特定的函数或方法来实现。在JavaScript中,显式类型转换与隐式类型转换相对应,后者是在运算过程中,JavaScript引擎...