什么是表达式和语句
- 两者的定义区别:一个表达式会产生一个值,它可以放在任何需要一个值的地方,语句则是由分号分隔的句子或命令。也可以这样理解:语句是可以单独执行的、能够产生实际效果的代码;而表达式则是包含在语句中,根据某种条件计算出一个值或得出某种结果,然后由语句去判断和处理的代码。如果在表达式后面加上一个“;”分隔符,这就被称为“表达式语句”。它表明“只有表达式,而没有其他语法元素的语句”。
1 + 1 是一个表达式,它的值为2
console.log 是一个表达式,它的值为函数本身
var a = 0; 是一个赋值语句
if (a = 0) { a++ } 是一个条件语句
function fn(){} 是一个声明语句
console.log("hello"); 是一个表达式语句
- 一般的javascript中的语句分为下面几种:
(1)声明语句:变量声明和函数声明
(2)赋值语句
(3)控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句,当然还有比较特殊的标签语句。
(4)表达式语句:这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。
-
两者的功能区别:表达式经常用作作为一个函数调用的参数,它可以放在任何需要一个值的地方。而语句则是一个行为,循环语句和if语句就是典型的语句,一个程序是由一系列语句组成的。
-
是否支持嵌套方式的区别:在javascript中所有表达式都有返回值,表达式均可以嵌套在别的表达式中,但语句不行,语句只能独立出现。
标识符的规则
- 标识符由字母、下划线、
$或数字组成,并且第一个字母必须是“字母、下划线或$” - 标识符不能是系统关键字和保留字(JS本身使用的变量名和将来将会使用的变量名)
- 标识符的命名严格区分大小写(驼峰命名法,第一个单词首字母小写后面的单词首字母大写)
- 标识符通过先声明再赋值的方式使用,声明一个变量并赋值,成为变量的初始化
- 可以使用中文标识符
- 标识符尽量简单,并见名知意
合法的标识符:
var a = 0;
var _test = 0;
var $a = 0;
var userName = 'zhangsan';
var 工资 = 0;
挨打没够的标识符:
var _________ = 0;
var $A____B$c = 0;
不合法的标识符:
var 9abc = 0;
var window = "hi~";
var my-hobbies = "basketball";
if else 语句
- if语句,也就是选择结构,选择结构指的是根据“条件判断”来决定使用哪一段代码。选择结构有3种:单向选择、双向选择以及多向选择,但是无论是哪一种,JavaScript都只会执行其中的一个分支。
单向选择:即if语句,括号内为条件判断,如果结果为true则执行下面大括号的代码,如果结果为false则跳过下面代码。
if (a > 0) {
alert(a);
}
双向选择,即if..else语句,如果结果为true则执行下面大括号的代码,如果结果为false则执行else里面的代码,三元表达式也属于双向选择。
if (a > 0) {
alert(a);
} else {
alert(b);
}
多项选择,即if...else if..else语句,就是在双向选择的基础上增加n个选择分支。
if (a > 0) {
alert(a);
} else if (a == 0) {
alert(0);
} else {
alert(b);
}
if语句的嵌套:在JavaScript中,if语句是可以嵌套使用的。
var a = 10, b = 20;
if (a > 0) {
if (b > 0) {
alert(true);
} else {
alert(false);
}
} else {
if (b < 0) {
alert(false);
}
}
- switch结构:switch语句会根据“判断值”来判断,然后来选择使用哪一个case。如果每一个case的取值都不符合,那就执行default的语句。
/*switch(判断值)
{
case 取值1:
语块1;break;
case 取值2:
语块2;break;
……
case 取值n:
语块n;break;
default:
语句块n+1;
}*/
var d = 7;
var week;
switch (d) {
case 1:
week = "周一";
break;
case 2:
week = "周二";
break;
case 3:
week = "周三";
break;
case 4:
week = "周四";
break;
case 5:
week = "周五";
break;
case 6:
week = "周六";
break;
default:
week = "周日";
}
console.log("今天是" + week);
注意,如果case代码块后面缺少了break,switch结构会直接执行default代码块的语句
while for 语句
循环结构,指的是根据条件来判断是否重复执行某一段程序。若条件为true,则继续循环;若条件为false,则退出循环。
- while循环,指的是在“满足某个条件下”循环反复地执行某些操作的语句。
如果“条件”返回为true,则会执行大括号{}内部的程序。当执行完大括号{}内部的程序后,会再次判断“条件”。如果条件依旧还是true,则会继续重复执行大括号中的程序……循环执行直到条件为false才结束整个循环,然后再接着执行下面的程序
while (条件) {
执行语句;
}
var a = 0;
var b = 0;
while (a < 100) {
console.log(b += 1);
a++;
}
//打印1 - 100的整数
值得注意的是,a++是while循环的退出条件,如果缺少了a++,那么a就永远等于1,就永远小于100,循环就变成了死循环,while循环一定要写退出条件。
- do..while循环结构:与while循环不同的是,do..while循环一定会至少执行一次,也就是先执行一次,再判断是否继续执行。
do {
……
}while (条件);
- for循环:
for(初始化表达式; 条件表达式; 循环后操作) {
……
}
for (var i = 0; i < 100; i++) {
console.log(i);
}
//输出0 - 99的整数
在以上for循环中,首先定义一个用于计数的变量i,其中i的初始值为0。然后定义一个判断条件i<100,只要i小于100就会执行for循环中的程序。最后定义一个循环后的表达式i++,也就是说,每次循环之后都会进行一次i++。
break 和 continue
- 在循环语句中,当代码执行遇到break时,直接退出循环,break后面的代码(循环内)不会再执行
- 当代码执行遇到continue时,退出本次循环,继续执行符合条件的下一次循环
label
{
foo: 1;
}
这玩意不是对象,它只是一个代码块,值为1(其他也没什么好说的)