JavaScript 语句分为:
表达式语句
声明语句
分支语句(条件语句)
循环语句
跳转语句
1.表达式语句
123; ‘sss’; true; false; null; undefined;
12+true; a+b; Number(true);
1.1. 单行语句
var a = 9; // 单行的赋值语句
b = a * 9; // 单行语句
1.2 复合语句(语句块)
复合语句,就是多条语句用花括号括起来,组成的整体就是一个语句块,也称为复合语句,
在 JavaScript 中会把语句块当成一条语句执行。
{
var a = 2;
a++;
b = !!a;
} // 语句块末尾不需要加分号。
2.声明语句
2.1变量声明语句
关键字 var
语法格式:var 变量 1[=值 1][, 变量 2[=值 2]]….;
例如:
var a , // a =>undefined
b =2,
c = 3;
2.2函数声明语句
function f() { // function 是关键字,标注:当前为函数声明
var a = 123;
a *= 3;
return a;
} // 函数的定义用一个语句块包裹。
2.3 if 语句
简单分支 if 语句
If 语句是:条件分支语句。
语法:
if (表达式) 语句; // 第一种
if(表达式) // 第二种
语句;
if(表达式) { // 第三种,推荐。 语句块;
} // 语句块结尾不需要加分号。 语义:当表达式为真的时候,执行后面的语句。
demo:
if( 233 * 2 > 456) {
a = 4;
}
注意:当 if 语句的执行语句只有单行的时候,可以省略花括号,但是建议不要省略。
2.4 if-else 语句
如果我需要实现:如果小明的年龄小于 18 岁,那么不给小明啤酒喝,否则给小明啤酒喝?
else:否则的意思
if else 语句的格式:
if(表达式){
语句;
}else {
语句;
}
var age = 10;
// 如果小明的年龄大于 18,给他喝啤酒,否则不给他喝啤酒。
if(age > 18) { // 如果条件表达式为真值,那么执行紧跟的语句块,
否则执行 else 语句块
console.log('小明,大于 18 岁了,可以喝啤酒');
} else {
console.log('小明,小于 18,不能喝酒!');
}
2.5 if else if 语句
如果有多个条件,分别对应执行多个操作的时候怎么用 if 和 else 实现呢?
比如: a = 1[2,3--7]; 输出 a= 1,那么输出星期一,2=>星期二..... 语法格式:
if(表达式) {
语句;
}else if(表达式) {
语句;
}else if {
语句;
} else {
语句;
}
代码:
var num = 5;
if( num == 1 ) {
console.log('星期一');
} else if( num == 2 ) {
console.log('星期二');
} else if( num == 3 ) {
console.log('星期三');
} else if( num == 4 ) {
console.log('星期四');
} else if( num == 5 ) {
console.log('星期五');
} else if( num == 6 ) {
console.log('星期六');
} else {
console.log('星期日');
}
2.6 If 语句嵌套
If 语句内部的语句块可以嵌套其他语句及 if 语句
语法格式:
if(表达式) {
if(表达式 2) {
if(表达式 3) {
console.log(1);
}
}
}
案例:
如果变量 a 是数字类型,那么判断其是否大于 9,如果大于 9 则输出'大于 9', 否则输出:'非法类型'
// 如果变量 a 是数字类型,那么判断其是否大于 9,如果大于 9 则输出'大于 9', 否则输出
:'非法类型'
// 第一步:判断变量 a 是否是数字
var a = 7;
// 判断变量 a 的类型,使用 typeof 可以获取它的类型
if( typeof(a) === "number" ) {
// 判断 a 是否大于 9
if( a > 9 ) {
console.log('大于 9');
} else {
console.log('非法类型');
}
}
// 第二步:判断他的大小。
if语句练习
• 备注:Math.random()方法会随机返回 0-1之间的小数
1.声明两个变量a,b,随机赋值 0-10之间的数,然后如果a > b 那么输出 a,如果a = b 输出=号,如
果 a< b 输出 老马
2.给定一个数值变量(1-7之间)如果是6、7则输出周末,否则输出工作日.
3.判断用户名是否为空。
4.判断一个变量是不是字符串,如果是字符串请将字符串转为数值类型并返回结果。否则,直接把变量
转成boolean类型输出结果。
4.While 语句
如何实现用 js 计算 1 到 100 的和呢?
1+2+3+4....?
while 就是循环语句的一种。 语法:
while(表达式) {
语句;
}//语义:当满足条件时,循环执行语句,直到表达式不成立
demo:
var i = 0,sum = 0;
while( i <= 100){
sum += i;
i++;
}
案例 1:输出 10 个(0-100 之间)随机数Math.random() // => 0-1 之间的一个小时。
0-100 的随机数,那么就需要 *100
var i = 1; // 循环的索引。
// 当 满足这个判断表达式为真值的时候,不断进行循环执行语句块。
while(i <= 100) {
// 循环体语句块。
t += i; // t =>1+2=>3 => 6
i++; // i =>2 , i => 3 => 4
}
console.log(t);
// 第一步: 判断 判断表达式是否为 真值(1,true、非空字符串等)
// 第二步: 如果是真值 那么执行 while 的语句块,否则结束 while 语句的循环,继续执行后面的
语句。
// 继续重复第一步和第二步。
案例 2:实现 1 到 10 的阶乘?
var i = 1, result = 1;
while( i <= 10 ) {
result *= i;
i++;
}
5.do-while 语句
do-whie 语句就是 while 语句的变种。
语法格式
do {
语句;
} while(表达式);
do while 语句就是先执行一个语句块然后在做判断,如果表达式成立继续下一次的语句的执行。
do while 语句较少使用。
var i = 0; // 循环的索引
do {
console.log(Math.random() * 100);
i++; // 让索引加 1
console.log(i);
} while( i < 10 );
console.log('循环执行完成');
6. for 循环语句
for 循环语句是前测试语句,其实本质是 while 循环语句的变种。 语法
for(初始化语句;判断语句;循环结束执行语句) {
循环体执行的语句;
}
for 语句,现在执行初始化语句,只执行一次。然后根据 判断语句是否为 true,如果是 true 则执行
循环体,最后执行 结束执行语句,在进行执行判断语句,如果 false,则 for 循环结束。
// 循环的特点:
// 1. 都有一个索引变量,。 要么 0,要么 1。 i,k,j 一般都用这些变量名做索引变量。
// 2. 在循环体内或者每次循环的时候都要对循环的索引+1
// 3. 都有一个判断表达式进行退出的出口。
// for( 索引的赋值表达式; 判断表达式; 索引后续处理表达式 ) {
// // for 循环的语句块
// }
// 第一:先执行(索引赋值表达式),而且只执行一次。
// 第二:执行判断表达式,如果是真值,那么执行语句块。否则结束当前 for 循环语句。
// 第三:执行完语句块后,执行索引后续处理表达式。
// 第四:继续重复 第二和第三步骤。
// 赋值表达式:执行一次。 var i = 1;
// 判断表达式是每次循环的开始, 然后执行语句块, 最后执行 索引后续处理表达式+1.
for(var i = 1; i <= 10; i++) {
// 循环体:每次循环都会执行一次。
console.log(Math.random() * 100);
}
循环案例:
//1. 求从 1 到 100 的和
var result = 0; // 放我们最终的计算结果。
for(var i = 1; i <= 100; i++) {
result += i;
}
console.log(result);
// 2. 求 10 的阶乘
var result2 = 1, k;
for( k = 2; k <= 10; k++ ) {
result2 *= k;
}
console.log(result2);
综合案例:
1、求 100 以内,可以对 3 求余为 0 的正整数的个数。
var count=0;
for(var i=1;i<=100;i++{
if(i%3 == 0){
count++;
}
}
console.log(count);
2、斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、
21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,
F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数
列都有直接的应用。
规律:前面两数的和等于后面的值。
请用 JavaScript 实现,求 F(n)的值,n>=3;
规定:f(1) = 1, f(2) = 1 ,f(3)=2... f(n)
分别用 for 循环和 while 循环实现
var fn1 = 1, // 第一个数
fn2 = 1, // 第二个数
n = 20, // 求 f(20)的值,n=20
i, // 循环索引
result; // 最终的结果
for( i = 3; i <= n; i++) {
// f(n) = f(n-1) + f(n-2)
result = fn1 + fn2;
// 2 = 1 + 1 第一次循环
// 3 = 2 + 1 第二次循环
// 5 = 3 + 2 第三次循环
// 8 = 5 + 3 第四次循环 ....
// 下一次循环的时候,fn1 fn2 怎么变?
// 1. fn1 变成 了当前的 result
// 2. fn2 变成了 当前的 fn1
fn2 = fn1;
fn1 = result;
console.log(result + ' ');
}
console.log(result);
7.continue 语句
continue 语句也是为了精确控制循环语句。
js 遇到 continue 语句后,立即结束当前循环轮次,直接把程序跳转到下一个循环的轮次。
for(var i =0; i<10;i++) {
if(i %7 == 0) {
continue; //立即执行 结束执行语句,并执行下次循环
}
}
案例:计算 1-100 的和,去除掉对 3 取余为 0 的数字。
// 计算 1-100 的和,去除掉对 3 取余为 0 的数字。
var i = 1, result = 0;
for(i = 1; i<= 100; i++) {
if( i % 3 == 0 ) {
// 不能让当前的 i 参与和的运算了。略过当前的循环轮次。
continue; // 继续下一轮的循环,当前循环轮次结束。
}
result += i;
}
console.log(result);
8.break 语句
break 语句可以用于精确控制循环语句跳出语句块。
当 js 遇到 break 后,会立即结束当前的循环语句,并强制立即执行循环后面的语句;
for(var i =0; i<10;i++) {
if(i %7 == 0) {
break; //立即结束循环
}
}
9.Switch-case 语句
switch 语句用于基于不同的条件来执行不同的动作。
default 关键词来规定匹配不存在时做的事情。
把给一个数字 1-7 之间,根据数字返回相应的星期, 1:星期一,2:星期二... var num = 5;
switch( num ) {
case 1: // 当 num === 1 的时候,执行冒号后面的语句。
console.log('星期一');
break; // 跳出当前的 switch 语句
case 2:
console.log('星期二');
break;
case 3:
console.log('星期三');
break;
case 4:
console.log('星期四');
break;
case 5:
console.log('星期五');
break;
case 6:
console.log('星期六');
break;
// case 8:
// case 9:
// case 10:
// console.log('error');
// break;
default:
console.log('星期日');
}
综合案例
• 质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然
数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
var count=0,n=11;
for(var i=1;i<=n;i++){
if(n%i == 0){
count++;
}
}
if(count == 2){
console.log('是质数');
}else{
console.log('不是质数');
}
• 有一个数:781,判断此数是否是质数?
var n=781,count=0;
for(var i=0;i<=n;i++){
if(n%i == 0){
count++;
}
}
if(count == 2){
console.log('是质数');
}else{
console.log('不是质数');
}
网友评论