JavaScript语言基础(二) 运算符

 

运算符总览


括号

(x) [x]

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

求反,自加减

-x

返回 的相反数

!x

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

x++

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

x--

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

++x

x 值加 1,返回后来的 

--x

x 值减 1,返回后来的 

乘、除

x*y

返回 乘以 的值

x/y

返回 除以 的值

x%y

返回 与 的模(除以的余数)

加、减

x+y

返回 加 的值

x-y

返回 减 的值

关系运算

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

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

等于、
不等于

x==y

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

x!=y

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

恒等

X===y

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

 

位与

x&y

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

位异或

x^y

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

位或

x|y

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

 

逻辑与

x&&y

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

逻辑或

x||y

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

 

条件

c?x:y

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

赋值、
复合运算

x=y

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

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 οnlοad="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 οnlοad="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 οnlοad="test()"></body>
</html>
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值