day3-函数

  • day3-函数已关闭评论
  • 81 次浏览
  • A+
所属分类:Web前端
摘要

1、打印100以内7的倍数2、计算1~100之间所有奇数的和3、入职薪水10K,每年涨幅5%,第50年工资多少


循环练习

1、打印100以内7的倍数

// 需要验证的是1-100之间的数字 循环计数器正好可以表示 // i初始值设置为1 正好可以表示出需要验证的数字 for (var i = 1; i <= 100; i++) {     if (i % 7 == 0) {         console.log(i)     } } 

2、计算1~100之间所有奇数的和

// 计算1~100之间所有奇数的和  先找出 每一个奇数 然后求和运算         var sum = 0;         for (var i = 1; i <= 100; i++) {             if (i % 2 != 0) {                 sum+=i;             }         } 

3、入职薪水10K,每年涨幅5%,第50年工资多少

// 入职薪水10K,每年涨幅5%,第50年工资多少 var money = 10000; for (var i = 2; i <= 50; i++) {     money = money * 1.05;     console.log('第'+i+'年的薪资是:'+money) } 

4、计算1000~2000之间的闰年(每行四个,打印到页面)

// 创建一个计数器 用于记录是第几个闰年 var index = 0; // 计算1000~2000之间的闰年(每行四个,打印到页面) for (var year = 1000; year <= 2000; year++) {     if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {         document.write(year +' ')         index++;//if条件满足 说明找到了一个闰年 计数器需要增加         if(index % 4 == 0){             // 每四个             document.write('<br/>')         }      } } 

5、计算水仙花数

 for (var num = 100; num <= 999; num++) {             // 提取出数字中每一位数字             // 百位数字             var b = parseInt(num / 100);             // 提取十位数字             var s = parseInt((num - b * 100) / 10);             // 提取个位数字             var g = (num - b * 100) % 10;             // b**次方数             if (num == b ** 3 + s ** 3 + g ** 3) {                 console.log(num + '是水仙花数')             }         } 

6、计算素数

// 计算素数 var num = 9; // 素数是除了自己跟1之外的任何一个数都无法除尽 // 需要将当前这个数从2开始 一路除以到4 过程中 有一个数可以被除尽证明不是素数 否则就是素数 // 假设现在的这个数是一个素数 使用true表示 // var flag = true; // for (var i = 2; i < num; i++) { //     // 在循环的过程中if判断会执行很多次 //     if (num % i == 0) { //         flag = false; //     } // } // // 循环结束 flag为false 说明 不是素数 如果 flag还是true 就说明前面没有一次是可以除尽 // console.log(flag ? '素数' : '不是素数')  // js中两个关键字 break continue; // for(var i =0;i<10;i++){ //     if(i==4){ //         break; //     } //     console.log(i); // }  // for (var i = 0; i < 10; i++) { //     if (i == 4) { //         continue; //     } //     console.log(i); // } // console.log('over') // break整个循环退出 不管后面还有多少次循环没有执行  // continue是跳出当前这一次循环,后面还有循环需要执行的继续 var flag = true; for (var i = 2; i < num; i++) {     // 在循环的过程中if判断会执行很多次     if (num % i == 0) {         flag = false;         break;     }     console.log('循环执行了') } 

7、九九剩法表

// 输出9*9table标签  // 1、输出1个tr中存在9个td单元格 // var html = '<table><tr>'; // for (var i = 1; i <= 9; i++) { //     html += '<td></td>'; // } // html += '</tr></table>'; // document.write(html);  // 2、9个tr 每个tr中9个td // 循环嵌套 外层循环执行一次 里层循环执行n次 // 当j = 1的时候 里层循环中i 会从1执行到9  j = 1  i = 1循环体代码 i=2循环体代码 // 当j = 1的时候 i需要 1 // 当j = 2的时候 i需要 1 2  var html = '<table border="1">'; for (var j = 1; j <= 9; j++) {     html += '<tr>'     for (var i = 1; i <= j; i++) {         html += '<td>' + i + ' * ' + j + ' = ' + (i * j) + '</td>';     }     html += '</tr>'; } html += '</table>'; document.write(html); 

8、填数

var html = '<table>'; for (var i = 1; i <= 10; i++) {     html += '<tr>'     for (var j = 1; j <= 10; j++) {         //(i-1)*10+j         // i = 1 表示第一行  需要设置 1-10         // j = 1  值为1         // j = 2  值为2         // 。。。         // i = 2 表示第二行 需要设置 11-20         // j = 1  值为11         // j = 2  值为12         // 。。。         html += '<td>' + ((i - 1) * 10 + j) + '</td>'     }     html += '</tr>' }  html += '<table>' document.write(html) 

初识数组

数组的作用

js中基本数据类型只能存储一个值 存在弊端 例如现在需要编写程序计算出所有同学的平均成绩,所以需要记录每一个同学额分数。可以每一个同学使用一个变量名称表示,但是不方便。如果人数发生改变 需要修改代码 所以需要使用数组结构。通过使用数组 可以存储多份数据 

数组的基本使用

1、创建数组

// 1、创建数组  // 语法  var 变量名称 = [元素1,元素2,....];  在创建数组中使用中括号叫做字面量  具体存储的每一个值叫做元素 元素没有数据类型的约束,可以是任何一种数据类型 但是一般所有元素都是相同的数据类型 // 如果数组中没有元素 叫做空数组 但是空数组转换为布尔值是真 // var score = []; var score = [80, 67, 90, 53]; console.log(score) 

2、控制台查看的结果

day3-函数

3、访问数组元素

// 2、访问数组中元素         // 语法:变量名称[下标] 下标千万不要越界         console.log(score[6]); // undefined         // 在获取数据是 将下标保存到其他变量中通过 数组[下标变量]         var index = 3;         console.log(score[index]); 

4、数组长度

// 3、数组长度 console.log(score.length);//这个是对象访问属性的语法 // score[length] 这个表示取出score数组中length变量保存的值的元素 // 获取数组长度 // console.log(score['length']) // 规律 数组最大下标=数组长度-1 console.log(score[score.length-1]);//获取最后一个元素值 

5、数组修改元素/追加元素

var arr = ['a','b'] // 修改语法  数组变量[下标]=值  如果存在下标就修改不存在下标就添加 arr[1] = 'c' // 追加一个元素 arr[arr.length] = 'cc' console.log(arr) 

6、数组遍历

// 5、数组遍历(就是将数组中每一个元素取出使用  循环) var sum = 0; for (var i = 0; i < score.length; i++) {     // 每次循环 i表示 0 1 2 ... 正好对应着数组的下标     sum += score[i] } console.log(sum / score.length) 

变量内存分布

内存地址解释

计算机中所有的功能都是CPU在进行计算,但是CPU没有存储数据的能力。所有运算都是由内存条中存储的数据提供。 为了更好的使用内存管理数据,操作系统将内存划分为多个区域。主要关心的是堆区与栈区。堆区与栈区空间依旧很大。所为了方便去管理,每个区域都继续进行一个更小的划分,每一个小区域都分配一个编号,编号就叫做内存地址。实际使用 可以使用十六进制的数 堆区:相对空间比较大 相对效率要低 栈区:相对空间小 相对效率要高 

基本数据类型

1、示例代码

//先创建i变量(在栈区开辟一个空间)  赋值时将变量的值存储起来          var i = 10;         // 先创建j变量 在栈区开辟一个空间 当执行j=i(赋值语句 永远会将变量在栈区存储的值进行赋值) 将i变量在栈区存储的值拷贝一份 存储到j变量的栈区         var j = i;         // i=20是一个赋值语句 将i变量在栈区存储的值从10修改为20         i = 20;         // 取出j变量栈区的值 10         console.log(j);//10 

2、内存分布图

day3-函数

引用数据类型

1、示例代码

// var arrr 先在栈区开辟一个空间,当执行arr=[1,2,3] 将数据保存到堆区 栈区中记录数据在堆区的位置         var arr = [1,2,3];         // var newArr 在栈区开辟一个空间 当执行newArr = arr 将arr栈区存储的值赋值给newArr 导致newArr与arr变量对应堆区的同一份数据         var newArr = arr;         // 根据arr在栈区记录的地址到堆区中找到第一个值修改为100         // arr[0] = 100;          // console.log(newArr)         // 此时的修改是直接赋值 会创建新的堆区空间记录数据 最后将arr在栈区的值存储为新的空间地址 导致 arr与newArr相互不影响         arr = [3,4,5];          console.log(newArr) 

2、内存图

day3-函数

结论:

​ 1、变量直接(变量=值)赋值永远是修改栈区存储的内容

​ 2、基本类型直接赋值之后 其中一个变量修改不影响另外一个变量

​ 3、引用类型直接赋值后。如果顺着内存修改数据(arr[0]=100)两个变量相互印象,如果是直接给其中一个变量赋值导致与;另外一个变量不共享数据 最终两个变量独立相互不影响

函数

函数的作用

目前写的代码是不能复用的 如果需要实现一模一样的功能需要将代码复制一份,导致代码质量不高 并且不方便后期的维护 所以可以使用函数解决这个问题。函数的特点就是一次封装 多次调用 

函数的定义与调用

1、语法

1、创建语法 	声明式函数:function 函数名称([形参列表]){         函数体代码         //可选的return语句       } 	赋值式函数:var 函数名称 = function([形参列表]){         函数体代码         //可选的return语句       }  2、调用语法 函数名称([实参列表]) 

2、使用示例

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title> </head> <body>     <script>         // 创建函数 函数创建不会将内部的代码执行         function fn(){             console.log('100行代码执行')         }         // 声明式函数         var fn2 = function(){             console.log('声明式函数')         }         // 调用函数         fn();         fn();         fn();         fn2();         fn2();     </script> </body> </html> 

声明式与赋值式的区别

1、同一个script标签的情况

<!-- 函数创建与调用都在一个script标签中 -->     <script>         // 1、在同一个script标签中 声明式函数 任何位置都可以调用         // 2、在同一个script标签中 赋值式的函数只能在函数之后调用         fn();         function fn(){             console.log('声明式函数');         }         fn();          // fn3 is not defined 说明fn3不存在         // fn3();         // fn2 is not a function  说明fn2存在 但是只是不是一个函数而已         fn2();         var fn2 = function(){             console.log('提莫')         }          fn2()       </script> 

2、不同的script标签

<!-- 2、不同的script标签中 -->     <script>         // fn3();         // fn4();     </script>      <script>         var fn3 = function(){             console.log('盖伦');         }          function fn4(){             console.log('亚索');         }     </script> 

结论

​ 1、声明式函数 在同一个script标签 任何位置都可以使用 但是在不同的script标签中只能在script标签后才可以调用

2、赋值式函数 不论什么情况 永远只能在函数之后调用