📌 循环

for循环 循环代码块一定的次数

  1. //语法
  2. for( 初始化变量; 控制条件表达式判断; 操作表达式 ){
  3. 执行语句
  4. }
  5. //案例
  6. for(var i = 0; i < 10; i++){
  7. console.log(i)
  8. }
  9. //可分解
  10. var i = 0;
  11. for(;i<10;){
  12. console.log(i);
  13. i++;
  14. }
  15. //执行步骤:
  16. /*1.声明变量 var i = 0; ----初始化变量
  17. *2.运行循环的条件 i < 10; ----控制条件表达式判断
  18. *3.满足条件执行循环代码块语句 ----执行语句
  19. *4.执行操作表达式 ----操作表达式
  20. */

while循环 当指定的条件为 true 时循环指定的代码块

  1. //语法
  2. var 初始化变量
  3. while( 控制条件表达式判断 ){
  4. 循环体
  5. 操作表达式++
  6. }

do/while循环——项目中很少使用 特点:条件无论真假,循环体至少要执行一次

  1. //语法
  2. var 初始化变量
  3. do {
  4. 循环体
  5. 操作表达式++
  6. } while( 控制条件表达式判断 );

退出循环语句

  • continue **退出本次循环 退出当前次循环,继续执行剩余次数**
  • break **退出整个循环 结束整个循环,后续的循环都不执行了**

小试牛刀

  1. //从0开始累加,求累加和小于100的数字?
  2. var sum = 0
  3. for(var i = 0; i <= 100; i++){
  4. sum += i
  5. if(sum >= 100){
  6. break;
  7. }
  8. console.log(i, sum)
  9. }
  10. -------------------------------------------------------------------------------
  11. //筛选100以内,除去可以被7整除或个位数为7的数字?
  12. for(var i = 0; i <= 100; i++){
  13. if(i % 7 == 0 || i % 10 == 7){
  14. continue;
  15. }
  16. console.log(i)
  17. }
  18. -------------------------------------------------------------------------------
  19. /*面试题:
  20. *实现打印0-100的数?
  21. *()中不允许写逻辑比较运算符
  22. *{}中不允许写子增量或自减量
  23. */
  24. var i= 100;
  25. for(;i--;){
  26. console.log(i)
  27. }
  28. -------------------------------------------------------------------------------
  29. /*面试题:
  30. *10的N次方?
  31. */
  32. var n = 5,
  33. num = 1;
  34. for(var i= 0 ; i <= n; i++){
  35. num *= 10
  36. }
  37. conslole.log(num)
  38. -------------------------------------------------------------------------------
  39. /*面试题:
  40. *n的阶乘?
  41. */
  42. var n = 5,
  43. num = 1;
  44. for(var i = 1 ; i <= n; i++){
  45. num *= i
  46. }
  47. conslole.log(num)

📌 引用值初识

数组Array 记录若干数据,相当于一个数据容器

  1. //通过字面量创建新数组【常用】
  2. var arr = [] //空数组
  3. var arr = [值1,值2,值3,值4,···] //非空数组
  • 数组名[ 索引 ] :访问数组元素,对应索引无数据,输出undefined
  • 数组名[ 索引 ] = 值 :数组的索引是从0开始,给对应索引赋值
  • 数组名.length :获取数组中元素个数
    • arr[ arr.length ] = 值 ——> length会动态改变,可给数组添加元素
    • arr.length = number ——> 设置数组长度(大于数组长度有空位置,小于则会删除多余元素)


对象Object 无序数据集合,属性值可以是基本值、对象、函数

  1. //通过字面量 创建新对象【常用
  2. var obj = {} //空对象
  3. var obj = { //非空对象
  4. 1: '字符串'
  5. 2: number
  6. 3: function() {},
  7. ···
  8. '键4': true,
  9. 'say-hi': function() {}, //js命名规范不允许使用‘-’横杠,加引号可使用
  10. }

数据类型检测 typeof

  1. typeof "John" // 返回 string
  2. typeof 3.14 // 返回 number
  3. typeof false // 返回 boolean
  4. typeof [1,2,3,4] // 返回 object
  5. typeof {name:'John', age:34} // 返回 object
  6. typeof null // 返回 object
  7. typeof undefined // 返回 undefined

undefined 和 null 区别

  • 你可以使用 null 或者 undefined 来清空对象
    • var person = null; ——> 值为 null(空), 但类型为object
    • var person = undefined; ——> 值为 undefined, 类型为 undefined
  • null 和 undefined 的值相等,但类型不等
    • typeof undefined // undefined
    • typeof null // object
    • null === undefined // false
    • null == undefined // true

何时使用null

  • 当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null

相同点

  • 都是原始类型保存在栈中变量本地

不同点

  • undefined——表示变量声明过但并未赋过值
  • null——表示一个变量将来可能指向一个对象


📌 显示/隐式类型转换

显示类型转换

  • Number( ) :强制转化为数字
    • Number( 布尔值 ) ——> true为1,false为0
    • Number( undefined ) ——> NaN
    • Number( null ) ——> 0
    • Number( ‘字符串’ )
      • 数字字符串——> 数字类型值,否则NaN
      • 空字符串 ——> 0
      • 数字+字符串 ——> NaN


  • String( ) :强制转化为字符串
    • String( 数值 ) ——> 字符串类型”数字”
    • String( 布尔值 ) ——> true为 “true”,false为 “false”
    • String( undefined ) ——> “ undefined “
    • String( null ) ——> “ null “


  • Boolean( ) :强制转化为布尔类型
    • undefined、null、-0、0、+0、NaN、” “ ——> 布尔值为false,其余都为true


  • isNaN( ) :判断是否为 非数字
    • 先通过Number( 值 ) ——> 判断是否为NaN ——> NaN为true,否则false

**

隐式类型转换

  • + :和字符串进行加号的拼接,结果都是字符串
  • - * / % :利用减、乘、除、取余都会隐式调用Number( ) 转换为数值型


常见特殊类型转换

常见隐式类型转换.png

📋 课后作业

利用for循环算出斐波那契数列的第N位

  1. var n = parseInt(window.prompt('N=?'))
  2. 斐波那契数列:1 1 2 3 5 8 13 21 ...
  3. ------------------------------------------------------------------
  4. var n = parseInt(window.prompt('请输入需要斐波那契第几位数字?'))
  5. if (n <= 0) {
  6. alert('您输入的位数不存在!')
  7. } else {
  8. if (n <= 2) {
  9. console.log(1);
  10. } else {
  11. var n1 = 1,
  12. n2 = 1,
  13. n3;
  14. for (var i = 2; i < n; i++) {
  15. n3 = n1 + n2;
  16. n1 = n2;
  17. n2 = n3;
  18. }
  19. console.log(n3);
  20. }
  21. }