读书人

JavaScript语言基础(2) 运算符

发布时间: 2012-10-06 17:34:01 作者: rapoo

JavaScript语言基础(二) 运算符

?

运算符总览


括号

(x)?[x]

中括号只用于指明数组的下标

求反,自加减

-x

返回?x?的相反数

!x

返回与?x?(布尔值)相反的布尔值

x++

x?值加?1,但仍返回原来的?x?值

x--

x?值减?1,但仍返回原来的?x?值

++x

x?值加?1,返回后来的?x?值

--x

x?值减?1,返回后来的?x?值

乘、除

x*y

返回?x?乘以?y?的值

x/y

返回?x?除以?y?的值

x%y

返回?x?与?y?的模(x?除以y?的余数)

加、减

x+y

返回?x?加?y?的值

x-y

返回?x?减?y?的值

关系运算

x<y?x<=y
x>=y?x>y

当符合条件时返回?true?值,否则返回?false?值

等于、
不等于

x==y

当?x?等于?y?时返回?true?值,否则返回?false?值

x!=y

当?x?不等于?y?时返回?true?值,否则返回?false?值

恒等

X===y

X与y数据类型相等且值相等返回true,否则返回false

?

位与

x&y

当两个数位同时为?1?时,返回的数据的当前数位为?1,其他情况都为?0

位异或

x^y

两个数位中有且只有一个为?0?时,返回?0,否则返回?1

位或

x|y

两个数位中只要有一个为?1,则返回?1;当两个数位都为零时才返回零

?

逻辑与

x&&y

当?x?和?y?同时为?true?时返回?true,否则返回?false

逻辑或

x||y

当?x?和?y?任意一个为?true?时返回?true,当两者同时为?false?时返回?false

?

条件

c?x:y

当条件?c?为?true?时返回?x?的值(执行?x?语句),否则返回?y?的值(执行?y?语句)

赋值、
复合运算

x=y

把?y?的值赋给?x,返回所赋的值

x+=y?x-=y?x*=y
x/=y?x%=y

x?与?y?相加/减/乘/除/求余,所得结果赋给?x,并返回?x?赋值后

?

其中有三个需要注意:

一、==(相等)?与?===(恒等)的区别

简单的说,相等判断会进行数据类型转换;而===不转换,必须是数据类型一致且值相等;

转换过程与一般语言的顺序一致;基本都是boolean->int->double->string

例如:

?

<html><head><title>test</title><script type="text/javascript">function test() {alert(1 == "1");//显示 truealert(1 == true);//显示 truealert(0 == false);//显示 truealert("1" === "1");//显示 truealert(1 === "1");//显示 falsealert(1 === true);//显示 false}</script></head><body onload="test()"></body></html>
?

?

?

二、另一条可是这样理解,有布尔表达式运算的时候,如果变量不是布尔类型,会用变量的值构造Boolean类型,然后进行运算。

Boolean类型构造原则:值为?0、-0、null、""、false、undefined?或?NaN,则将其变为?false。否则设置为?true(即使参数是字符串?"false")。

例如:

?

?

<html><head><title>test</title><script type="text/javascript">function test() {alert(!undefined);//truealert(!'');//truealert(!1);//falsealert(!0);//truealert(true == 1);//truealert(false == "false");//falseif (undefined) {alert(1);} else {alert(2);//alert结果为2}}</script></head><body onload="test()"></body></html>
?

?

?

三、或运算符还可以这么用(在Jquery和Extjs源码中常见到),用来给undefined的变量赋一个默认值。目前还没有找到关于此用法的官方语法解释。例如:

?

<html><head><title>test</title><script type="text/javascript">function test() {var param;//这里其实是undefinedparam = param||'hello world!';alert(param);//显示"hello world!"if (undefined||'') {alert(1);} else {alert(2);//显示的是2}/** * 本人分析: * 首先'或'运算符将param转为boolean,因为是undefined,因此转为false * 第一个值为false后,或运算符就判断第二个表达式的值,又将string转为true,如果是0/'' 等就返回false; * 不管第二个被转换为true还是false,总之都要返回第二个表达式的值;并且返回的是原数据类型 * 以此来达到默认值的效果 */}</script></head><body onload="test()"></body></html>
?

?

?

读书人网 >JavaScript

热点推荐