上一篇我们讲到数据类型,我们可以根据数据类型创建不同的变量,但是要用JavaScript做一些有用的工作,还需要能够进行计算和处理数据,也就是需要完成一些操作。因此这篇博客,就带大家去看看JavaScript的操作符。
概览
首先要说明一点,我们这里所说的操作符和运算符是一个意思。JavaScript里的操作符包括 一元,布尔、算术、关系、三元、赋值、位操作符。JavaScript中的操作符适用于很多值,包括字符串、数值、布尔值、对象等。
本篇博客的操作符介绍如下思维导图。
一元操作符
只能运算一个值的运算符叫做一元运算符。
1.赋值操作时,如果递增或递减运算符前置,那么前置的运算符因为是“前”,所以要先累加或累减再赋值,如果是后置运算符,因为“靠后”,则先赋值再累加或累减。下面举个栗子:
var box=100;
var age=++box; //age 值为101
var height=box++; //height 值为100
2.其它类型应用规则
var box =‘ab’;box++; //NaN,字符串包含非数值转成NaN
var box=false;box++; //1,false 转成数值是0,累加就是1
算术操作符
算术操作符有5个,加减乘除求模(取余)。
加法
加号既可以用于数值,也可以用于字符串。两个字符串拼接是一种很直观易懂的操作。
例如: var message=“I amfeeling”+“happy”;执行结果就是“I am feeling happy”
像这样把多个字符串首尾相连的操作叫做“桥接”,这种拼接也可以通过变量来完成。
例如:var mood =“happy”; var message=“I am feeling”+mood;
不仅仅字符串可以拼接在一起,数值和字符串也可以拼接在一起。因为Java Script是一种弱类型的语言,所以这种拼接操作是允许的。此时,数值会被自动转换为字符串。
例如:
var year=2016;var message=“The year is ”+ year;
加法中,如果一个数值和一个字符串求和会按照字符串来拼接,但是两个数值进行加法运算结果为数值。例如:
alert(“10”+20) //这个输出结果就是 字符串“1020”
alert (10+20) //这个结果就是数值结果30
关于加法另一个非常有用的快捷操作符就是 +=,它可以一次完成“加法和赋值”:
var year=2016;
var message=“Theyear is”;
message+=year;
执行完这些语句后,最后变量message的值是 “The year is 2016”。
如果加法和对象类型相加:
var box =10+对象 //如果有toString()或valueOf(),则返回10+返回数的值,如果没有则结果 为 10[Object Object]
乘法
乘法中,数值的乘法运算和数学中差不多,特殊情况有以下几种。
var box =100*NaN ; //有一个NaN,结果就为NaN
var box =100*true; //true 的值为1,所以结果为100
var box=100*“Wang”; //“Wang”转成了NaN,结果为NaN
var box =100*"; //"转换为了0,结果为0
var box=100*对象; //如果有toString()或valueOf(),则返回100*返回数的值,如果没有则结果 为 NaN
除法
除法中,数值的除法运算和数学中差不多,特殊情况有以下几种。
var box =100 /"; //结果为Infinity 正无穷
var box=100 /“Wang”; //“Wang”转成了NaN,结果为NaN
var box=100/对象; //如果有toString()或valueOf(),则返回100/返回数的值,如果没有则结果 为 NaN
取模
取模中,数值的取模运算和数学中差不多。其余的情况除了 var box =100 %true ; //值为0 ,其它的情况都是NaN。
比较操作符
比较操作符也可以叫做关系操作符。它们几乎只能用在条件语句里,所以上面的思维导图是不是更懂一点了呢。像小于、大于、小于等于、大于等于这些都比较好理解。
问你一个问题,如果你想比较两个数是否相等,应该用等于操作符没错,那么等于操作符是“=”么?
答案,当然不是。不要忘了我们赋值用的是“=”,那么等于就是两个等号(==)。
看下面的栗子:
var my_mood =“happy”;
var your_ mood=“great”;
if (my_mood ==your_mood){
alert(“We both feltthe same.”);
}
输出结果是false,因为我们心情不一样。
但是相等操作符也有让我们犯糊涂的时候。比如看下面的栗子,你的结果是什么?
var a = false;
var b="";
if (a==b)
{
alert ("a equals b ");
}
你的结果出来了没?上面代码执行结果居然是 true,但是我们都知道 a和 b 不相等,但是“”空字符串被理解为false。所以要想进行更为严格的比较,我们就要使用另一种等号(===)。
===全等操作符会被严格执行,不仅仅比较值,也会比较变量的类型。同样是上面的例子:
执行结果就是false,因为在值的比较上,false和空字符串相等,但是a的数据类型是 Boolean。但是 b的数据类型是string。
对于不等符!=来说,你想要严格的不相等就是用!==。
❀对于比较操作符还有几点规则需要大家遵循:
1.一个操作数是布尔值,比较值钱转换为数值,false转为0,true转为1.
2.一个操作数是字符串,则比较之前将其转成数值再比较。
3.不需要任何转换的情况下,null和 Undefined 是相等的。
逻辑操作符
Java Script允许把条件语句里的操作组合在一起。例如,如果想检查某个变量,不妨假设这个变量的名字是num,它的值是不是在5-10之间,我将需要进行两次比较操作。首先比较这个变量是否大于或等于5,;然后比较这个变量是否小于或等于10.这两次的比较操作成为逻辑比较。看看下面的代码:
if(num>=5 && num<=10)
{
alert("The numberis in the right range.");
}
上面就用到一逻辑操作符 && 。逻辑操作符的对象是布尔值,只有在两个操作数都是 true时才会返回true。
"逻辑或 " 的符号为||,只要它的操作数一个为“true”,那么逻辑或的操作就是 true,如果两个操作数都为 true,结果也为true。只有当两个操作数都是false的时候,逻辑或操作才会是false。
“逻辑非”的符号为!,它只作用于单个逻辑操作数,其结果是把那个逻辑操作数返回的布尔值取反。如果返回的是 true,就取反为 false。看下面的代码:
if (!1>2) //逻辑非作用于括号里的内容
{
alert("All is well with the world");
}
逻辑非,也可以用于把条件语句的结果颠倒过来。看看下面的例子:
if (!num>10 || num<5))
{
alert("The number is in the right range.");
}
其它操作符
逗号操作符
逗号运算符可以再一条语句中执行多个操作。看看下面的例子:
var box=100,age=20,height=166; //声明多个变量
var box=[1,2,3,4,5]; //声明数组
var box ={ //声明对象
1:2,
3:4,
5:6
};
三元操作符
三元操作符就是if 语句的简写形式。
varbox =5>4 ? '对':'错'; //结果是对,5>4结果是 true把结果返回给 box。
转为if语句就是:
var box =""; // 初始化变量
if (5>4) { //判断表达式返回值
box='对'; //赋值
}else{
box ='错'; // 赋值
}
小结
本篇博客列出了很多代码例子帮助我们了解JavaScript操作符的基础,别小看操作符的力量,进行计算和处理数据,表达式条件的组合变化,都离不开操作符。多多实践,下次见~