表达式和操作符
表达式
表达式是若干同类型的数据,通过运算符按照一定规则连接起来的有意义的式子。注意,表达式和语句是不同的概念,比如num1+num2就是一个表达式,而sum=num1+num2则是一个完整的句子。一般来说,表达式常用于给变量赋值或者进行流程控制。
操作符
操作符分为:算数操作符、逻辑操作符、赋值操作符、比较操作符、三元操作符这几类。其中算数操作符比较便于理解,用来进行数字的加减乘除运算。比较操作符有四种:
object1==object2
// ==操作符用于比较两个操作数是否相等
object1===object2
// ===操作符用于比较两个操作数是否既满足值相同,又满足类型也相同
ob1 != ob2
// !=操作符用于判断两个操作数是否不同
ob1 !== ob2
// !==操作符用于判断两个操作数在值不相同的同时,类型是不是也不相同
==和!=比较便于理解,===和!==可以通过下面的表格来记忆:
三元操作符: 条件?代码1:代码2。当条件表达式为真时,执行代码1,当条件表达式为假时,执行代码2。三元操作符可以用来代替if语句以便于方便的实现分支流程。
exp?code1:code2
// 如果exp==true,将执行code1,跳过code2,若exp=false,将执行code2,跳过code1
// 比如,执行过下面的代码后,num将被赋值为1
1==1?num=1:num=2
// 而下面的代码将为num赋值2
1==2?num=1:num=2
JavaScript中逻辑操作符的使用就比较灵活了。逻辑的操作符为boolean型时,使用方法同其他语言中相同。当操作数都不为boolean型时,&&操作符会判断第一个操作数的值,如果第一个操作数为true,就会返回第二个操作数的值,如果第一个操作数为false,就直接返回第一个操作数的值。||操作符同样判断第一个操作数,如果第一个操作数为true,直接返回第一个操作数的值,否则返回第二个操作数的值。可能看文字理解比较绕,通过代码,应该很容易理解。
// &&操作符
// 第一个操作数为真
var test_00=true&&12
var test_01=1&&false
// 第一个操作数为假
var test_10=false&&12
var test_11=0&&true
// ||操作符
// 第一个操作数为真
var test_100=true||12
var test_101=1||false
// 第一个操作数为假
var test_110=false||12
var test_111=0||true
// 输出在控制台查看
console.log("true&&12="+test_00+" "+typeof(test_00))
console.log("1&&false="+test_01+" "+typeof(test_01))
console.log("false&&12="+test_10+" "+typeof(test_10))
console.log("0&&true="+test_11+" "+typeof(test_11))
console.log("true||12="+test_100+" "+typeof(test_100))
console.log("1||false="+test_101+" "+typeof(test_101))
console.log("false||12="+test_110+" "+typeof(test_110))
console.log("0||true="+test_111+" "+typeof(test_111))
如上代码定义的8个变量的值和类型都是什么呢?把以上代码写入html文件中,在浏览器打开,查看控制台,通过控制台的输出,可以查看结果如下:
到此为止,基本的算数操作符和逻辑操作符已经学习完了。在之前的学习中,我们已经学习了顺序执行的代码如何书写(但学习编程语言和学习其他东西一样,是要通过练习才能深入贯通的)。接下来,我们将学习,js中的流程控制是怎么实现的。
流程控制语句
在实际操作中,代码往往不是按照顺序一句一句执行的,有的时候,我们需要通过判断,来选择两个代码段中的一个来执行,或者是有一个代码段需要重复执行若干次。这种情况下,就需要根据具体情况,决定代码执行与否和代码执行次数,这就是流程控制。js提供了if、switch来实现选择功能,提供for、for-in、while、do...while来实现循环功能。使用方法如下所示。
if(statement){
codes
}else if(statement2){
codes
}else{
codes
}
switch(statement){
case one:codes;break;
...
default:codes;
}
for(初始条件;判断条件;变值处理){
codes
}
while(statement){
codes
}