Js隐式转换

JavaScript027

Js隐式转换,第1张

1 .if 判断,其余类型转为布尔类型

2 .比较操作符 ==

3 .+,-

4 . 点 号操作符

5 .在对数字,字符串进行点操作方法时,默认将数字,字符串转成对象

5 .关系符比较的时候

1 .

1 .null 转为“null”

2 .undefined 转为 “undefined”

3 .Boolean true转为“true”,false转为“false”

4 .number :11 转化为“11”,11e20 科学计数法转为“1.1e+21”

5 .数组,空数组转为字符串“”,如果数组中有null,或者undefined,同样当作空字符串处理,[1,2,3,4]="1,2,3,4"

6 .函数function a(){}转为字符串为 “function a(){}”

7 .一般对象:“[object,object]”

8 .NaN "NaN"

1 .只有null,undefined,0,false,NaN,空字符串,这6种情况转为布尔值的结果为false,其余都是true

2 .转换为布尔值得场景

1 .null 0

2 .undefined NaN

3 .Boolean true 1,false 0

4 .字符串:纯数字的字符串,转为对应的数字,空字符串转为0,其余都是NaN

5 .数组,数组首先会被转换为原始类型,然后根据上面的原始类型转换规则进行转换

6 .对象,和数组一样 {}=NaN

7 .NaN NaN

1 .Data对象会先调用toString

2 .当对象转为其他原始类型时,会先调用对象的valueOf方法,如果valueOf方法返回的是原始类型,直接返回这个原始类型

3 .返回的不是原始类型,或者valueOf方法不存在,继续调用toString()方法。如果toString()返回的是这个原始类型。直接返回这个原始类型,如果不是原始类型,直接报错

1 .将一个值转换为他为真正的布尔值

2 .!![] false ![]==true

1 .字符串和数字类型相比较的时候,字符串会被转换为数字类型

2 .布尔值和其他类型值比较

3 .null ,undefined 和其他类型的比较

4 .js规定null,undefined宽松都与自己相等,但是与其它值都不相等

1 .会把对象按照对象转换规则转换成原始类型,再次比较

1 .如果两个对象指向同一个对象,相等操作符返回true,否则返回 false

1 .字符串连接符的情况

在之前我们讨论到布尔运算符

&&

||

的时候,我说过它们的结果是布尔值。这样说起来有点过于简单化了。如果你用它们来计算布尔数据类型,它们确实会返回布尔值。但是它们也能用于计算其他的类型的数据,这种时候,返回的就将是其中的一个参数了。

或运算符“||”

真正做的事是这样的:它首先检查一下它左边的参数,如果转换成布尔类型的值后为true,那么就返回左边的参数,否则就返回右边的参数。

仔细想想当运算符两边都是布尔类型的值的时候,是不是这样的。为什么它这样运行?这样运行的结果其实非常实用。我们来看这个例子:

复制代码

代码如下:

var

input

=

prompt("What

is

your

name?",

"Kilgore

Trout")

alert("Well

hello

"

+

(input

||

"dear"))

如果用户按“取消”或者直接关掉prompt对话框,input的值将是null或者“”。这两种情况下,转换成布尔类型的值都是false。那么这时候

input

||

“dear”

这个表达式的意思就是input有值的时候就得到input的值,否则就得到“dear”。这是一个很简单的提供一个默认值的方法。

与运算符

“&&”

的工作原理类似,但是与

“||”

正好相反。当它左边的参数转换成布尔类型的值为“false”的时候,它就返回那个值,否则返回右边的值。这两个操作符还有一个特点就是,只有在必要的时候,才会计算它右边的表达式的值。在“true

||

X”

这个表达式中,不管X是什么,结果都是true,所以X就不会被计算,如果X有其他的效果,那这个效果也不会产生。“false

&&

X”

也是同样的道理。

复制代码

代码如下:

false

||

alert("I'm

happening!")

true

||

alert("Not

me.")