当前位置: 代码迷 >> JavaScript >> JavaScript语言基础(2) 运算符
  详细解决方案

JavaScript语言基础(2) 运算符

热度:395   发布时间:2012-10-06 17:34:01.0
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

Xy数据类型相等且值相等返回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");//显示 true
alert(1 == true);//显示 true
alert(0 == false);//显示 true
alert("1" === "1");//显示 true
alert(1 === "1");//显示 false
alert(1 === true);//显示 false
}
</script>
</head>
<body onload="test()"></body>
</html>
?

?

?

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

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

例如:

?

?

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

?

?

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

?

<html>
<head>
<title>test</title>
<script type="text/javascript">
function test() {
var param;//这里其实是undefined
param = 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>
?

?

?

  相关解决方案