算术操纵符
加减乘除这些算术操纵中的每一种都必需借助于响应的操纵符才完成。操纵符是JavaScript为完成种种操纵而定义的一些标记。等号(=)、加号(+)、减号(-)、乘号(*)、除号(/)。
下面是一个简朴的加法操纵:
1 + 4
还能够把多种操纵组合在一起:
1 + 4 * 5
为防止发生歧义,能够用括号把差别的操纵分开开来:
1 + (4 * 5)
(1 + 4) * 5
变量能够包含操纵:
var total = (1 + 4) * 5;
还能够对变量举行操纵:
var temp_fahrenheit = 95;
var temp_celsius = (temp_fahrenheit - 32) / 1.8;
JavaScript还供应了一些异常有效的操纵符作为种种经常运用操纵的缩写。比方,假如想给一个数值变量加上1,能够运用以下所示的语句:
year = year + 1;
也能够运用++操纵符来到达一样的目标:
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.")
}