1、表达式
一个表达式可以产生一个值,有可能是运算、函数调用、也有可能是字面量(如5)。表达式可以放在任何需要值的地方。
2、语句
语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序有很多个语句组成,一般情况下,以;分割一个一个的语句。
3、流程控制
程序的三种基本结构。
(1)、顺序结构。即代码从上到下依次执行,默认就是这样执行的。
(2)、分支结构(选择情况)。根据不同的情况执行不同的代码,比如作业做完了就可以打游戏,没有做完就要做作业。
(3)、循环结构。即重复做一件事情,如去体育课老师要求操场跑10圈,每跑一次心里想着是否跑够10圈,直到跑完10圈停止。
4、分支结构
(1)if语句。
//简单的条件语句
if (/* 条件表达式为真 */) {
// 执行语句
}
// 稍微复杂一点的条件语句
if (/* 条件表达式为真 */){
// 成立执行语句
} else {
// 否则执行语句
}
// 多个条件的条件语句
if (/* 条件1 */){
// 成立执行语句
} else if (/* 条件2 */){
// 成立执行语句
} else if (/* 条件3 */){
// 成立执行语句
} else {
// 最后默认执行语句
}
案例
(1)、求两个数的最大数
(2)、判断一个数是偶数还是奇数
(3)、分数转换,把百分制转换成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A
// (1) 求两个数的最大值
var num1 = 2, num2 = 5;
if (num1 > num2) {
console.log(num1);
}else {
console.log(num2);
}
// (2)判断一个数是偶数还是奇数
var num = 5;
if (num % 2 === 0) {
console.log(num+'是偶数');
}else {
console.log(num+'是奇数');
}
// (3)分数转换,把百分制转换成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A
var score = 90;
if (score < 60){
console.log('E');
}else if (score >= 60 && score <70){
console.log('D');
}else if (score >= 70 && score <80){
console.log('C');
}else if (score >= 80 && score <90){
console.log('B');
}else{
console.log('A');
}
// 等同于以下写法
var score = 90;
if (score >= 90){
console.log('A');
}else if(score >= 80){
console.log('B')
}else if(score >= 70){
console.log('D')
}else if(score >= 60){
console.log('D')
}else{
console.log('E')
}
(2)、三元运算符
语法:表达式1 ? 表达式2 : 表达式3
当表达式1成立,返回表达式2的值,当表达式1不成立,返回表达式3的值。
是对if…else…语句的一种简化写法。
案例:
// (1)、是否年满18岁。当年龄超过18返回成年,否则返回未成年。
var age = 17;
console.log(age >= 18 ? '成年' : '未成年');
// (2)、获取两个数中的最大值。
var num1 = 3, num2 = 6;
console.log(num1 > num2 ? num1 : num2); // 值为6
// 还可以将其赋值为一个变量
var max = num1 > num2 ? num1 : num2;
console.log(max); // 值为6
(3)、switch语句
语法格式:
switch (expression) {
case 常量1:
语句;
break;
case 常量2:
语句;
break;
case 常量3:
语句;
break;
case 常量3:
语句;
break;
default:
语句;
break;
}
如
var day = 5;
switch (day){
case ':
console.log('星期一');
break;
case 2:
console.log('星期二');
break;
default:
console.log('不在星期一和星期二范围内');
break;
} // 输出为不在星期一和星期二范围内
注意:
(1)、switch语句中判断语句使用的是===。
(2)、switch语句中不写break不会报错,但是会继续往下执行。
5、布尔类型的隐式转换。
流程控制语句会把后面的值隐式转换成布尔类型。
// 显式转换
var num = 123;
console.log(Boolean(num)); // true
// 隐式转换 即不调用Boolean方法,自动转换为布尔类型。
if (num){
console.log('hello')
} // 值为hello
// 转换为false的五种情况 0 ''(空字符串) NaN null undefined
var msg;
if (msg){
console.log('hello')
} // 定义变量没有赋值时值是undefined,所以不输出
var str = '123';
var isOk = !str;
console.log(isOk); // false
var isOk = !!str;
console.log(isOk); // true
6、循环结构
在javascript中,循环语句有三种,while、do…while、for循环。
(1)、while语句
基本语法
// 当循环条件为true时,执行循环体,
// 当循环条件为false时,结束循环。
while (循环条件) {
//循环体
}
如:计算1-100之间所有数的和
// 初始化变量
var i = 1;
var sum = 0;
// 判断条件
while (i <= 100) {
// 循环体
sum += i;
// 自增
i++;
}
console.log(sum); // 5050
(2)、do…while语句
do…while循环和while循环非常像,二者经常可以相互替代,但是do…while的特点是不管条件成不成立,都会执行一次。
基础语法:
do {
// 循环体;
} while (循环条件);
如:
// 计算1-100之间的数字的和
var i = 1;
varsum = 0;
do {
sum += i;
i++;
}while(i<=100);
console.log(sum); // 5050
案例
// (1)、求100以内所有3的倍数的和
var i =1;
var sum = 0;
do {
if(i%3 === 0){
sum += i;
}
i++;
}while(i<=100);
console.log(sum); // 1683
// (2)、使用do-while循环:输出询问“我爱你,嫁给我吧?”,选择“你喜欢我吗?(y/n):",如果输入为y则打印”我们形影不离“,若输入为n,则继续询问
do {
var msg= prompt('我爱你,嫁给我吧?','你喜欢我吗?(y/n):');
}while(msg !== 'y');
console.log('我们形影不离!')
(3)for循环语句
while和do…while一般用来解决无法确认次数的循环。for循环一般在循环次数确定的时候比较方便。
语法:
// for循环的表达式之间用的是;号分隔的,千万不要写成,
for (初始化表达式1; 判断表达式2; 自增表达式3) {
// 循环体4
}
如:
// for循环实现打印1-100之间的所有数字
for (var i=0;i<=100;i++){
console.log(i);
}
案例:
// 控制台打印正方形
var str = ''
// 外层循环控制输出多少行
for (var j=0;j<10;j++){
// 控制一行输出多少个*
for (var i=0;i<10;i++){
str = str + '* ';
}
str = str + '\n';
}
console.log(str);
// 控制台打印三角形
var str1 = ''
// 外层循环控制输出的行数
for (var m=0;m<10;m++) {
// 内存循环控制输出*的个数
for (var n=m;n<10;n++){
str1 = str1 + '* ';
}
str1 = str1 + '\n';
}
console.log(str1);
// 控制台打印九九乘法表
str2 = ''
for (var k=1;k<10;k++) {
// 内存循环控制输出*的个数
for (var l=k;l<10;l++){
str2 += k + '*' + l + '=' + k * l + '\t';
}
str2 = str2 + '\n';
}
console.log(str2);
7、continue 和 break
break:立即跳出整个循环,即循环结束,开始执行循环后面的内容。
continue:立即跳出当前循环,继续下一次循环。
案例
// 求整数50-200之间的第一个能被7整除的数
for (var i =50;i<= 200;i++){
if (i % 7 === 0) {
console.log(i); // 56
break;
}
}
// 求整数1-100的累加值,但要求跳过所有个位为3的数。
var sum = 0;
for (var j=0;j<=100;j++){
if (j % 10 === 3){
continue;
}
sum += j;
}
console.log(sum); // 4570
8、调试
调试的目的是确定错误的原因和位置。
错误:语法错误、逻辑错误。
过去调试javascript的方式:alert()和console.log()
断点调试:
浏览器中按F12–>sources–>找到需要调试的文件–>在程序的某一行设置断点。
Watch: 监视,通过watch可以监视变量的值的变化,非常的常用。
F10: 程序单步执行,让程序一行一行的执行,这个时候,观察watch中变量的值的变化。
F8:跳到下一个断点处,如果后面没有断点了,则程序执行结束。
以及debugger关键字。