加减乘除这些算术操做中的每一种都必须借助于相应的操做符才能完成。操做符是JavaScript为完成各类操做而定义的一些符号。等号(=)、加号(+)、减号(-)、乘号(*)、除号(/)。浏览器
下面是一个简单的加法操做:app
1 + 4
还能够把多种操做组合在一块儿:code
1 + 4 * 5
为避免产生歧义,能够用括号把不一样的操做分隔开来:对象
1 + (4 * 5) (1 + 4) * 5
变量能够包含操做:ip
var total = (1 + 4) * 5;
还能够对变量进行操做:字符串
var temp_fahrenheit = 95; var temp_celsius = (temp_fahrenheit - 32) / 1.8;
JavaScript还提供了一些很是有用的操做符做为各类经常使用操做的缩写。例如,若是想给一个数值变量加上1,可使用以下所示的语句:it
year = year + 1;
也可使用++操做符来达到一样的目的:io
year++;
相似地,--操做符将对一个数值变量的值进行减1操做。变量
加号(+)是一个比较特殊的操做符,既能够用于数值,也能够用于字符串。把两个字符串合二为一是一种很直观易懂的操做:语法
var message = "I am feeling" + "happy";
像这样把多个字符串首尾相连在一块儿的操做叫作拼接。这种拼接也能够经过变量来完成:
var mood = "happy"; var message = "I am feeling" + mood;
甚至能够把数值和字符串拼接在一块儿。由于JavaScript是一种弱类型语言,因此这种操做是容许的。此时,数值将会被自动转换为字符串:
var year = 2005; var message = "The year is" + year;
若是把字符串拼接在一块儿,其结果将是一个更长的字符串;可是若是用一样的操做符来“拼接”两个数值,其结果将是那两个数值的算术和。对比下面两条alert语句的执行结果:
alert ("10" + 20); alert (10 + 20);
第一条alert语句将返回字符串“1020”,第二条alert语句将返回数值30。第一条是对字符串“10”和数值20进行拼接的结果。第二条是对数值10和数值20进行假发运算的结果。
另外一个很是有用的快捷操做符是+=,它能够一次完成“加法和赋值”(或“拼接和赋值”)操做:
var year = 2010; var message = "The year is"; message += year;
执行完上面这些语句后,变量message的值将是“The year is 2005”。能够用以下所示的alert对话框来验证这一结果:
alert(message);
在解释脚本时,浏览器将依次执行这个脚本中的各条语句,咱们能够在这个脚本中用条件语句来设置一个条件,只有知足了这一条件才能让更多的语句获得执行。最多见的条件语句是if语句,下面是if语句的基本语法:
if(condition) { statements; }
条件必须放在if后面的圆括号中。条件的求之结果永远是一个布尔值,即只能是true或false。花括号中的语句——无论他们有多少条,只有在给定条件的求值结果是true的状况下才会执行。所以,在下面这个例子中,alert消息永远也不会出现:
if(1 > 2) { alert("The world has gone mad!") }
由于1不可能大于2,因此上面这个条件的值永远是false。
事实上,if语句中的花括号自己并非必不可少的。若是if语句中的花括号部分只包含着一条语句的话,那就能够不使用花括号,并且这条if语句的所有内容能够写在同一行上:
if(1 > 2) alert("The world has gone mad!");
不过,花括号能够提升脚本的可读性,因此在if语句中老是使用花括号是个好习惯。
if语句能够有一个else字句。包含在else字句中的语句会在给定条件为假时执行:
if(1 > 2) { alert("The world has gone mad!") } else { alert("All is well with the world") }
由于给定条件“1 > 2”的值为假(false),因此最后弹框显示else里面的内容。
JavaScript还提供了许多几乎只能用在条件语句里的操做符,其中包括诸如大于(>)、小于(<)、大于或等于(>=)、小于或等于(<=)之类的比较操做符。
若是想比较两个值是否相等,可使用“等于”比较操做符。这个操做符由两个等号构成(==)。单个等号(=)是用于完成赋值操做的。若是在条件语句的某个条件里使用了单个等号,那么只要相应的复制操做取得成功,那个条件的求值结果就将是true。
下面是一个错误地进行“等于”比较的例子:
var my_mood = "happy"; var your_mood = "sad"; if(my_mood = your_mood) { alert("We both feel the same.") }
上面这条语句的错误之处在于,它是把变量your_mood赋值给变量my_mood,而不是在比较它们是否相等。由于这个赋值操做总会成功,因此这个条件语句的结果将永远是true。
下面才是进行“等于”比较的正确作法:
var my_mood = "happy"; var your_mood = "sad"; if(my_mood == your_mood) { alert("We both feel the same.") }
此次,条件语句的结果是false。
JavaScript还提供了一个用来进行“不等于”比较的操做符,它由一个感叹号和一个等号构成(!=)。
if(my_mood != your_mood) { alert("We're feeling different moods.") }
相等操做符==并不表示严格相等,这一点很容易让人迷糊。例如,比较false与一个空字符串会获得上面结果?
var a = false; var b = ""; if(a == b) { alert("a equals b"); }
这个条件语句的求值结果是true,由于相等操做符==认为空字符与false的含义相同。要进行严格比较,就要使用另外一种等号(===)。这个全等操做符会执行严格的比较,不只比较值,并且会比较变量的类型:
var a = false; var b = ""; if(a === b) { alert("a equals b"); }
这一次,条件表达式的求值结果就是false了。由于即便能够认为false与空字符串具备相同的含义,但Boolean布尔值和String字符串可不是一种类型。
对于不等操做符!=也是如此,比较严格不相等,就要使用!==。
JavaScript容许把条件语句里的操做组合在一块儿。例如,若是想检查某个变量,假设这个变量的名字是num,它的值是否是在5 ~ 10之间,将须要进行两次比较操做。首先,比较这个变量是否大于或等于5,而后,比较这个变量是否小于等于10.这两次比较操做称为逻辑比较。下面是把这两个逻辑比较组合在一块儿的具体作法:
if ( num >= 5 && num <= 10 ) { alert("The number is in the right range.") }
这里使用了“逻辑与”操做符,由两个“&”字符构成,是一个逻辑操做符。
逻辑操做符的操做对象是布尔值。每一个逻辑操做数返回一个布尔值true或者是false。“逻辑与”操做只有在它的两个操做数都是true时才会是true。
“逻辑或”操做符由两个垂直线字符构成。只要它的操做数中有一个是true,“逻辑或”的操做就将是true。若是它的两个操做数都是true,“逻辑或”操做也将是true。只有当它的两个操做数都是false时,“逻辑或”操做才会是false。
if ( num > 10 || num < 5 ) { alert("The number is not in the right range") }
JavaScript还提供了一个“逻辑非”操做符,它由一个感叹号( ! )单独构成。“逻辑非”操做符只能做用于单个逻辑操做数,其结果是把那个逻辑操做数所返回的布尔值取反。若是那个逻辑操做数所返回的布尔值是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.") }