前言:
  学习一门编程语言的基本步骤
(01)了解背景知识
(02)搭建开发环境
(03)语法规范
(04)常量和变量
(05)数据类型
(06)数据类型转换
(07)运算符
(08)逻辑结构
8.逻辑结构——logic
   程序=数据+算法
   程序分为顺序执行,选择执行,循环执行
   (1)流程控制—选择执行
      1)if语句 结果为真的时候
          if(条件表达式){
          语句1;
          }
          语句2;
          注意:if后的大括号中如果只有一行语句,则可以省略大括号.

    //if语句
//如果满30就减15
var total=32;
if(total>=30){//如果total金额大于等于30
total-=15;//在原来基础上减15
}
console.log(total);// //练习:声明一个变量保存年龄,如果满18,打印成年人
var age=19;
if (age>=18)
{console.log('成年人');
console.log('可以去网吧');
} var age=19;
if (age>=18)
console.log('成年人');//只有一行语句,的时候可以省略{},也可以写一行 //练习:如果签名内容为空,设置默认签名
//声明变量保存签名内容,如果签名为空,设置默认签名‘这家伙很懒什么也没留下’,打印签名内容
var page='好热啊';
//if (page==='')//判断是否为空。
if (!page)
// !''->!false -> true
{page='这家伙很懒,什么也没留下';
}
console.log(page);//好热啊

在条件表达式中,有一些值默认代表false
          数值型的false的情况:0,NaN,
          字符串型的false的情况:'',空字符
          未定义的false的情况:undefined
          空的false的情况:null

    if (0)
{ console.log('hello');
}//不打印 if (1)
{ console.log('hello');
}//打印hello

2)if-else语句 如果前面是假就执行后面的条件表达式
        if(条件表达式){
        语句1;
        }else{
        语句2;
        }

    //if-else语句
//声明变量保存性别,0/1,如果是0打印女,否则打印男
var sex=0;
if (sex===0){
console.log('女');
}else{
console.log('男');
} //练习:声明变量分别保存用户名和密码,如果用户名是root,并且密码是123456,打印登录成功,否则打印登录失败
var uname='rojot';
var upwd='123456';
if (uname==='root' && upwd==='123456'){
console.log('登录成功');
}else{
console.log('登录失败');
}

3)if-else 嵌套,解决多项分支选择
        if (条件表达式1){
        语句1;
        }else ...if(条件表达式n){
        语句n;
        } else{
        语句n+1;//以上的条件表达式都是false,就执行该语句
        }

    //if-else 嵌套
//声明变量保存一个人的成绩,根据成绩打印对应的汉字
var score=56;
if (score>=90){
console.log('优秀');
}else if(score>=80 && score<90 ){
console.log('良好');
}else if(score>=70 && score<80 ){
console.log('中等 ');
}else if(score>=60 && score<70 ){
console.log('及格');
}else{
console.log('不及格');
}

4)switch-case   是一种特殊的多项分支语句,只有一种比较方式,就是全等于===
        switch-case ——转换器-情况
        break             ——结束打破
        switch(表达式){//通常是一个变量
        case 值1 ://如果表达式的值是 值1,
        语句1;
        break;//结束后面的语句
        ...
        default:
        语句n+1;//如果表达式的值和case中的值比较都是false,才会执行n+1
        }
        注意:表达式在和case后的值比较的时候,使用的是全等于,要求值和类型都相同。

    //switch-case语句
//根据星期的状态码,来打印对应的汉字0-6
var date=0;
switch (date)
{
case 0:
console.log('星期日');
break;
case 1:
console.log('星期一');
break;
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;
default:
console.log('错误的星期代码');
}

总结1:对比 if-else嵌套和switch-case的区别
                  相同点:两者都可以用于多项分支语句
                  不同点:if-else可以判断相等或是不等的情况。使用 范围更广泛;
                              switch-case只能用于全等于的比较,结构上给为清晰合理,可读性高,执行效率更高

(2)流程控制——循环执行
      循环:一遍又一遍执行相同或是相似的代码。
      循环的两个要素:
      循环条件:控制执行循环的次数,
      循环体:重复执行的相同或是相似的代码
      1)while循环
          while(循环条件){
          循环体
          }//当循环条件为true的时候,循环体运行中,循环条件是false的时候,循环结束

    //while循环
//循环产生10-20之间所有的数字,并打印出来
var num=10;
while (num<=20){//循环条件
console.log(num);
num++;//循环体
}
//练习:计算1-100之间所有偶数和
var i=1;//声明变量i
var sum=0;//声明变量sum
while (i<=100){//循环条件,如果I小于等于100
if(i%2===0){//计算为偶数的条件,
sum+=i; //sum等于sum加i
}
i++;//自增
}
console.log(sum);//

2)break打破循环
          在循环中,可以提前结束任何形式的循环
          isNaN()判断一个值是否为NaN 是—>TRUE 不是—>false

    //break打破循环
//打印数字1-10
var i=1;
while (true){//不停+1,没有结束
console.log(i);//每循环+1一次就打印一次数字
if (i===10){//当i为10的时候
break;//结束循环
}
i++;//循环+1
}//输出结果为1-10每个数字都打印一遍
// 在这里需要注意console.log(i)和 i++;的位置,位置不一样,输出的效果不一样,我们这里的需求是打印数字1-10 /*————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/ //下面需要用到浏览器端函数,简单解释一下
//alert() 弹出警示(消息)框
//prompt() 弹出提示(输入)框,需要使用变量来保存输入的值,默认类型是字符串类型,如果输入框中内容为空,返回空字符(''),如果点击取消返回null、 //练习:声明一个变量保存一个数字。无限循环弹出提示框,并输入数字,如果输入的数字大于保存的数字,弹出警示框提示 ‘big’,
//如果输入的数字小于保存的数字,弹出警示框提示‘small’,否则弹出警示框提示‘right’,结束循环。
var num=102;
while(true){
//弹出提示框
var str=prompt('input a number');
//如果输入大于之前的值
if (num<str){
alert("big");
//如果输入的值小于之前的数字
}else if (num>str){
alert("small");
}else{
//判断是否为数字,如果不是,提示
var str2=Number(str);
//isNaN,是否是NaN ——>true
if (isNaN(str2)){
alert('input a number');
}else{
//猜对
alert("right");
break;
}//注意这里空字符转数值为0
}
}

3)do-while循环 先执行一遍循环体,在判断循环条件,即使循环条件为false,也会在执行一遍循环体。
           do{
           循环体
           }while(循环条件);

        //do—while循环
//循环产生1-10之间所有的整数
var i=1;
do{
console.log(i);
i++;
}
while (i<=10); /*———————————————————————————————————————————————————————————————— */ //练习:声明变量保存123456,循环弹出提示框输入密码,如果输入正确结束循环。
var upwd="123456";
do{
//保存输入的密码
var str=prompt('input password');
//判断输入的密码是否正确
if (str===upwd){//如果正确
break;//结束循环
}
}
while (true);//循环条件。 //其他写法
var upwd="123456";
do{
//保存输入的密码
var str=prompt('input password');
}
while (str!==upwd);//如果输入的str保存的upwd不同,继续弹出窗口

4)for循环 表达式1:初始值,表达式2:循环条件,表达式3:增量,可以分解多种可能 多个循环条件中只有最后的一个起作用。
           for(表达式1;表达式2;表达式3){
           循环体 ;
           }

    //for循环
//计算1-20之间所有能被3整除的数字的乘积
var sum=1;//声明变量sum
for (var i=1;i<=20 ;i++ )//i初始值为1,循环条件为小于等于20,i执行自增
{
if (i%3===0){//如果i取余3等于0
sum*=i//sum等于sum乘以i
}
}
console.log(sum);//打印sum //练习:计算1-100的和
for (var i=1,sum=0;i<=100;i++ ){
sum+=i
}
console.log(sum);
//其他写法
var i=1,sum=0;
for ( ;i<=100;i++ ){//第一个表达式可以不用,但是要保留位置上的;分号,代表第一个表达式为空
sum+=i
}
console.log(sum); //练习:打印2000-2100年之间所有的闰年
//闰年:4年一闰,并且不能被100整除,或者能被400整除
for (var year=2000;year<=2100;year++){
if (year%4===0 && year%100!==0 || year%400===0){
console.log(year);
}
}

5) continue跳过特定条件继续执行循环
           跳过后边的循环体,继续执行增量。

    //continue跳过
//练习:打印1-100之间所有的整数,排除能被3整除和能被4整除的数字
for (var i=1;i<=100 ;i++ ){//i初始值为1,循环条件为小于等于100,i执行自增
if (i%3===0 || i%4===0){//如果i取余3等于0并且i取余4等于0
continue;//跳过此条件继续执行循环
}
console.log(i);//打印i
}

总结2:break和continue的区别
                      break :结束循环,后续不会再执行后续的循环
                      continue:跳过后边的循环体,继续执行增量,也就是下一次循环。

(3)循环嵌套——nest
      任何的循环之间可以相互嵌套

    //循环嵌套
//循环打印五次五颗*
for (var i=1,str='';i<=5 ;i++ ){
//每次循环拼接*
str+='*';
}
console.log(str);//打印结果 //以上代码要执行五次,把以上代码再次放到另一个循环中
//外层循环代表一共有多少行
for (var j=1; j<=5 ;j++ ){
//内层循环,控制每行有多少星星
for (var i=1,str='';i<=5 ;i++ ){
//每次循环拼接*
str+='*';
};
console.log(str);
}

04.JS逻辑结构的更多相关文章

  1. 04 js

    js 1. JavaScript概述 JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但 ...

  2. JS OOP -04 JS中的公有成员,私有成员和静态成员

    JS中的公有成员,私有成员和静态成员 a.实现类的公有成员 b.实现类的私有成员 c.实现类的静态成员 a.实现类的公有成员 之前定义的任何类型成员都属于公有成员的范畴,该类的任何实例都对外公开这些属 ...

  3. [04]JS获取文件大小方法

    </pre><pre name="code" class="html"><input id="file" ty ...

  4. 08.JS单词整理

    以下为按照文章顺序简单整理的JS单词, 注意:是JS单词注释,部分与英文不符 01.JS语法规范.变量与常量 console——控制台 log——日志 var——变量 variable变量,变化 co ...

  5. node.js初识04

    node的Get表单提交 form.html <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. js多线程?

    http://www.cnblogs.com/o--ok/archive/2012/11/04/JS.html http://blog.csdn.net/nx8823520/article/detai ...

  7. node.js第二天之模块

    一.模块的定义 1.在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. 2.狭义的说,每一个JavaScript文件都是一个 ...

  8. js获得页面get跳转的参数

    通过js获得页面跳转参数 页面通过window.location.href或通过window.parent.location.href进行页面跳转,在新的页面如何获得相应的参数呢? window.lo ...

  9. Vue.js 第1章 Vue常用指令学习

    今日目标 能够写出第一个vue应用程序 能够接受为什么需要学vue 能够使用指令 能够通过指定完成简单的业务(增加删除查询) 能够理解mvvm 为什么要学习vue 企业需要 可以提高开发效率 实现vu ...

随机推荐

  1. [bzoj2038] [洛谷P1494] [2009国家集训队] 小Z的袜子(hose)

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...

  2. 关于Navicat连接oralcle出现Cannot load OCI DLL 87,126,193 ,ORA-28547等错误

    navicat连接oracle数据库报ORA-28547: connection to server failed, probable Oracle Net admin error错误的解决方法 na ...

  3. [转]在C#中调用C语言函数(静态调用Native DLL,Windows & Microsoft.Net平台)

    原文:https://blog.csdn.net/yapingxin/article/details/7288325 对于不太了解.Net的人,如果想要了解.Net,我必须给他介绍P/Invoke.P ...

  4. 用 F# 手写 TypeScript 转 C# 类型绑定生成器

    前言 我们经常会遇到这样的事情:有时候我们找到了一个库,但是这个库是用 TypeScript 写的,但是我们想在 C# 调用,于是我们需要设法将原来的 TypeScript 类型声明翻译成 C# 的代 ...

  5. 移除sitemap中的entity

    下面截图是sitemap所在的位置 如果遇到什么原因,当前使用的entity被弃用需要删除,必须要把当前site map 引用的entity也一并删除. 不然会导致site map不能正常加载

  6. [总结]ACM模拟总结

    1.心态一定要稳,千万不要慌. 2.内部交流要多点,说不定就讨论出有用的性质了. 3.题目细节一定要想清楚. 4.一道题绝对不能让多个人来写. 5.英语要好好学.

  7. Nginx code 状态码说明

    最近了解下Nginx的Code状态码,在此简单总结下. 先来再回顾一下一个http请求处理流程: 一个普通的http请求处理流程,如上图所示: A -> client端发起请求给nginx B ...

  8. 解决linux安装软件:/lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录

    在linux系统中安装软件:/lib/ld-linux.so.2: bad ELF interpreter怎么解决 常用的安装因为系统软件位数问题,如:64位系统中安装了32位程序了, 是因为64位系 ...

  9. uml-类图书写指南

    说明 类图是最常用的UML图,面向对象建模的主要组成部分.它用于描述系统的结构化设计,显示出类.接口以及它们之间的静态结构和关系. 类图主要产出于面向对象设计的分析和设计阶段,用来描述系统的静态结构. ...

  10. Mysql百万数据量级数据快速导入Redis

    前言 随着系统的运行,数据量变得越来越大,单纯的将数据存储在mysql中,已然不能满足查询要求了,此时我们引入Redis作为查询的缓存层,将业务中的热数据保存到Redis,扩展传统关系型数据库的服务能 ...