目录
求数列1,1,2,3,5,8,13....数列的第12个数的值
表达式和语句
- 表达式:一个表达式可以产生一个值,有可能是运算、函数调用、有可能是字面量,表达式可以放在任何需要值得地方
- 语句:语句可以理解为一个行为,循环语句和判断语句就是典型的语句,一个程序由很多个语句组成,一般情况下,语句是一个一个的,语句结束后都会加一个分号;
布尔类型的隐式转换
流程控制语句中条件部分会把后面的值隐式转换成布尔类型,常用于if语句中
- 转换为true的情况 非空字符串 非0数字 任何对象
- 转换为false的情况 空字符串 0 NaN null undefined
var num; if (num) { //if里的布尔值为false,因为num只声明而没有赋值 //执行语句 } var str = '123'; var isOk = !str; console.log( isOk ); //返回的是false,因为上一句 ! 取反中会自动把字符串转换成布尔类型'123'为true
流程控制
指程序的三种基本结构分别是:顺序结构、分支结构、循环结构
顺序结构
按顺序从上到下执行代码
分支结构(选择结构)
根据不同的情况执行不同的代码
if语句
语法结构
//if语句一 if if (/* 条件表达式 */){ //执行语句 } //if语句二 if else if (/* 条件表达式 */){ //成立执行语句 }else{ //否则执行语句 } //if语句三 if else if if(/* 条件1 */){ //成立执行语句 }else if(/* 条件2 */){ //成立执行语句 }else if(/* 条件3 */){ //成立执行语句 }else{ //最后默认执行语句 }
三元运算符
表达式1?表达式2:表达式三
表达式1为一个布尔类型的表达式,返回的是一个布尔类型
当表达式1的布尔类型为true,返回表达式2的值,为false则返回表达式3的值
是对if-else语句的一种简化写法
switch语句
switch语句只能做值的相等判断,而if语句可以做一个范围的判断
注意switch语句里的判断使用的是===,所以case里的值不应加‘ ’单引号
如果省略break,则语句会有穿透作用,穿透到下一个case,即执行完该语句还会继续向下执行,不管是否满足
语法格式
switch (expression) { case 常量1: 语句; break; case 常量2: 语句; break; case 常量3: 语句; break; ... case 常量n: 语句; break; default: //类似if else里的else语句 语句; break; }
循环结构
重复做一件事情
while循环
基本语法
while (循环条件) { //当循环条件为true时,执行循环体;为false时,结束循环体 //循环体 }
计算1-100之间的和
var a = 1; var sum = 0; while(a <= 100){ sum += a; a++; }
do...while循环
do...while循环和while循环非常像,二者经常可以相互替代,但是do..while 的特点是不管条件成不成立,都会执行一次
语法结构
do { //循环体 }while(循环条件);
计算1-100之间的和
var a = 1; var sum = 0; do{ sum += a; a++; }while(a <= 100);
for循环
while和do..while一般用来解决无法确认次数的循环,for循环一般用在循环次数确定的时候
for循环的表达式之间用的是分号;分隔的,千万别写成逗号,
语法格式
//for循环的表达式之间用的是分号;分隔的,千万别写成逗号, for (初始化表达式1; 条件表达式2; 自增表达式3) { //循环体 }
执行顺序:1243-----243-----243(直到循环条件变成false)
1为初始化表达式 2为判断表达式 3为自增表达式 4为循环体
循环案例
打印10*10的符号正方形
var str = ''; // 外层循环控制输出的行数 for (var j = 0; j < 10; j++) { //内层循环控制输出10个* for (var i = 0; i < 10; i++){ str += '* '; } str += '\n'; } console.log(str);
打印三角形
var str = ''; // 外层循环控制输出的行数 for (var j = 0; j < 10; j++) { //内层循环控制输出每一行的*的个数 for (var i = j; i < 10; i++){ //i与j相关联才能控制每一行*数逐次少一 str += '* '; } str += '\n'; } console.log(str);
九九乘法表
var str = ''; // 外层循环控制输出的行数 for (var j = 0; j < 10; j++) { //内层循环控制每一行有多少个内容 for (var i = j; i <= 9; i++){ str += i + '*' + j + '=' + i * j + '\t'; } str += '\n'; } console.log(str);
求数列1,1,2,3,5,8,13....数列的第12个数的值
// 前两个数 var n1 = 1; // 前一个数 var n2 = 2; // 当前数 var n3; for (var i = 3; i <= 12; i++){ n3 = n2 + n1; n1 = n2; n2 = n3; } console.log(n3);
break和continue
- break:破坏 破坏循环,终止循环跳出整个循环的意思
- continue:跳过本次循环,继续下一次循环
//求整数50-200之间第一个被7整除的数 for (var i = 50; i <= 200; i++){ if(i % 7 === 0){ console.log(i); break; //break指破坏循环,终止循环跳出整个循环的意思 } } console.log('over'); //求1-100之间的累加和,但要跳过所有个位为3的数 var sum = 0; for ( var i = 1; i <= 100; i++){ if(i % 10 === 3){ continue; //此处的continue为跳过本次循环继续执行下次循环的意思,即不满足则继续i++来判断下一次 } sum += i; } console.log(sum);
调试
调试debug(解决程序中的异常)
错误:有两种分别为 语法错误和逻辑错误
过去调试JavaScript的方式
- alert( ); 弹出窗口式的调试,但此窗口弹出的时候无法看到后面代码的运行情况,而且此窗口要一直点击确认按钮来查看,关闭时要把整个标签关闭
- console.log( ); 比alert()方便很多,所有结果可同时在控制台查看
断点调试
- 断点调试时指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停止,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到错误的地方,停下即可。 F12弹出控制台,在sources的中间栏设置断点,然后F5刷新,把鼠标放到变量上可看到变量的此刻值,F11是设置断点后一步步执行的意思,跳到这一步的时候,该段选中代码是还未执行的。可在右边栏watch监视变量的变化(该变量手动选择)。