Skip to content

Latest commit

 

History

History

lesson-02

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

第2课 循环语句

目录

while

基本语法

  while(条件) {
    语句...
    {break  continue}
  }

示例 寻找1到100,000以内能整除123的数

  var i = 123
  var k = 0
  var b = null

  while(true) {
    b = parseInt(Math.random() * 100000)
    var f = b % i
    if (f === 0) {
      break
    }
    k = k + 1
  }

  console.log('b = ', b, ', 循环了', k, '次')

不用break的写法

  var i = 123
  var k = 0
  var b = null
  var f = null
  while(f !== 0) {
    b = parseInt(Math.random() * 100000)
    f = b % i
    k = k + 1
  }

  console.log('b = ', b, ', 循环了', k, '次')

do...while

基本语法

  do {
    语句...
    {break  continue}
  } while(条件)

示例

  var i = 123
  var k = 0
  var b = null
  var f = null
  do {
    b = parseInt(Math.random() * 100000)
    f = b % i
    k = k + 1
  } while(f !== 0)
  console.log('b = ', b, ', 循环了', k, '次')

for

基本语法

  for (#a始化条件; #b判断条件; #c条件值变化) {
    #d语句...
    {break  continue}
  }

其执行顺序是 #a -> #b (如果条件成立) -> #d -> #c -> #b (如果条件成立) -> #d ...

如我们有一个while 版本的求和语句

  i = 0
  sum = 0
  while(i<=10) {
    sum = sum + i
    i = i + 1
  }
  console.log(sum)

用for版本写出来就是

  var sum = 0
  for (
    var i=1;    // (1)
    i<=10;      // (2)(5)(8)
    ++i         // (4)(7)(10)...
  ) {           // (3)(6)(9)
    sum += i
  }
  console.log(sum)

用for循环遍历数组

  a = [1,2,3,4]
  for(var i=0; i < a.length; ++i) {
    console.log(a[i])
  }

for ... in

基本语法

  for (var 变量1 in 变量2) {
    语句...
    {break  continue}
  }

变量2通常是对象(hash 哈希值或者散列值)

遍历散列对象的所有key并打印

  mother = '母亲'
  studentA = {
    married: false,
    gender: 'male',
    name: 'Bob',
    age: 15,
    grade: 8,
    父亲: {           // 正常的文字都可以直接写这里!
      name: 'Adam'
    },
    [mother]: {      // key可以用变量代替
      name: 'Eva'
    },
    "01" : '...'     // 特殊的值做key要用引号包起来,去掉01的引号会报错
  }

  for (var i in studentA) {
    console.log(i, '=', studentA[i])
  }

break和continue

  • break的作用是跳出当前循环
  • continue的作用是忽略本次循环后面的语句,进行下一次循环

循环的嵌套,说明break和continue指令的作用

  for(var i=1; i<=100; i+=1) {
    var f = i % 3
    if (f !== 0) {
      while(i%2==0) {
        console.log('i不能被3整除,但能被2整除', i)
        break
      }
      continue
    }
    console.log(i)
  }

作业

  1. 找出100-999之间的所有“水仙花数”,所谓水仙花数是指一个三位数,各位数字的立方和等于该数本身。(如153=1^3+5^3+3^3)并输出这些数字,统计有多少个。并求出这些数字之和。 ☆答案☆

  2. 打印一千位斐波那契数列 斐波那契数列 ☆答案☆

  3. 使用console.log打印一个99*99的菱形(用你喜欢的字符填充),比如这是一个5x5的菱形 ☆答案☆

  *
 ***
*****
 ***
  *
  1. 打印100,000,000以内的素数(难度高)☆答案☆