一、作用域
1.作用域的定义
作用域:变量起作用的范围
全局作用域:整个js全局起作用
局部作用域:在函数体中变量作用范围
代码如下(示例):
<script> var num = 100 //全局作用域的变量 function fn(){ // 局部作用域 var num1 = 200 //num1的作用域为fn()函数体 console.log('num11 ',num) function fun(){ var num2 = 300 //num2的作用域为fun()函数体 console.log('num2 ',num2); console.log('num1 ',num1); } fun() } console.log('num22 ',num) fn() </script>
2.作用域的访问规则(针对变量)
①在当前作用域里面查找
②如果在当前作用域里面没有找到,就到上级作用域里面查找
③如果上级作用域里面没有找到,继续往上找,直到全局作用域
④如果全局作用域都没有,就会报错
以上的访问流程称为作用域链
代码如下(示例):
<script> var num = 100 function fun1() { var num1 = 200 console.log('fun1 num ',num) function fun2() { var num2 = 300 console.log('fun2 num ',num) // 3.如果上级作用域没有,接着向上找,至到全局作用域 console.log('fun2 num1 ',num1) // 2.如果当前作用域没找到,到上级作用域找 console.log('fun2 num2',num2) // 1.当前作用域找 console.log(num3) // 4. 如果全局作用域也没有, 直接报错Uncaught ReferenceError: num1 is not defined } fun2() } fun1() </script>
3.作用域的赋值规则
①赋值前在当前作用域查找
②上级作用域查找,找到赋值
③上级作用域查找,直到全局作用域
④如果以上三个步骤都没有找到,就会将创建全局变量,然后赋值
代码如下(示例):
<script> var num = 100 function fun1() { var num1 = 200 function fun2() { var num2 = 300 //赋值前在当前作用域查找 num1 = 400 // 上级作用域查找,找到赋值 num = 500 //上级作用域查找,至到全局作用域 num3 = 600 // 当前作用域查找,上级作用域查找,全局作用域查找,全局作用域也没查找到,将创建全局变量,然后赋值 console.log('num3 ',num3); } fun2() } fun1() </script>
注意:内层可以访问外层函数作用域变量
外层不能访问内层作用域变量
二、递归函数
概念:函数自身调用自身,这样的函数称为递归函数
作用:后面结果由前面推导出来的,可以采用递归函数简化代码
代码如下(示例):
<script> function fun(n){ if(n == 1){ return } console.log('fun ') fun(n--) } fun(2) </script>
注意:① 要有递归结束的条件
②改变递归条件的代码
递归函数示例:
代码如下(示例):
<script> //求 1+2+3+4+5.....+100 // sum(5) // sum(4)+5 //sum(5) // sum(3)+4 //sum(4) // sum(2)+3 //sum(3) // sum(n-1)+n //sum(n) function getSum(n){ if(n==1){ return 1 } return getSum(n-1)+n } var sum = getSum(100) console.log(sum) </script>
三、对象
对象:面对对象
①现实生活中对象:具体一事物,对象有自己的特征行为
②软件世界:对象 Object ;属性 方法 ;属性名:属性值构成
obj称为对象名,也可以叫引用变量
对象属于复杂数据类型:
var obj = {
name:’jakc’,age:18
}
obj 数据类型名 —–> Object
key/value—->键值对的集合
-
创建对象的两种方法
1.字面量方式:
var jackObj={ } //创建空对象
var jackObj={属性:属性值,
属性:属性值
}
代码如下(示例):
<script> var jackObj = { name:'jack', //姓名属性 => name属性名和jack属性值构成 age:18, // 年龄属性 => age属性名和18属性值构成 sex:'男' // 性别属性 } </script>
2.构造函数方式
var Obj=new object()
obj.属性=属性值,
obj.属性=属性值
代码如下(示例):
<script> var obj = new Object() //空对象 obj.name = 'jack', obj.age = 18 </script>
-
对象的相关语法:
代码如下(示例):
<script> // 1.创建对象: var obj = { //obj称为对象名,也可以叫引用变量 name:'jack', age:18, sex:'男' } //2. 访问对象给定的属性值 //通过对象访问对象属性 对象名.属性名 ====>属性值 console.log('name :', obj.name) console.log('age :',obj.age) console.log('sex :',obj.sex) // 3. 修改属性值 obj.name = 'rose' console.log('name ',obj.name) console.log(obj) // 4. 删除属性 // delete obj.name console.log(obj) // 5. 添加属性 obj.score = 98 console.log(obj) // 6. 遍历对象 for-in for(var key in obj){ // key = 'name' key='age' ... console.log('key ',key, ' value ',obj[key]) } // 7. 访问属性值,属性名是变量情况 console.log( 'name ',obj.name) var _name = 'name' console.log(obj[_name]) console.log(obj['name']) </script>
-
访问对象的示例:
代码如下(示例):
<script> //创建对象 var student={ name:'噜噜菲', num:'002', sex:'女', score:89, grade:'02' } //添加属性 student.height=160 //删除属性 delete student.score //遍历对象属性 for(var m in student){ console.log(m,student[m]) } console.log(student) </script>
四、数组
数组属于复杂数据类型 类型名为:Array
作用:存储一系列有序数列的集合
-
创建数组的两种方式
1.字面量方式
var arr=[ ] //创建空数组
var arr=[1,2,’jack’,true]
代码如下(示例):
<script> var arr = [10, 20, 30, 40] </script>
2.构造函数方式
var arr=new Array()
代码如下(示例):
<script> var arr1 = new Array(100, 200, 300, 400, 500) </script>
-
对象的相关语法:
代码如下(示例):
<script> //1. 创建数组 var arr = [10, 20, 30, 40] // 0 1 2 3 索引号 //2. 访问数组元素 console.log('arr[0] :', arr[0], ' arr[1] :', arr[1]) //3. 数组长度 console.log('length >> :', arr.length) //4. 遍历数组, 循环变量表示数组索引号从0开始 for (var i = 0; i < arr.length; i++) { console.log(arr[i]) } // 5. 创建数组只有一个元素, 表示创建一个空数组长度是5 length=5 var arr2 = new Array(5) console.log('arr2.length >>> ', arr2.length) for (var i = 0; i < arr2.length; i++) { console.log(arr2[i]) } // 6. 直接控制台打印 console.log(arr); </script>
数组例题:
1. 创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59
2. 求所有学生中分数最高的学生成绩,打印输出到界面
3. 求所有学生中分数最低学生成绩,打印输出到界面
4. 求不及格的学生有几个,打印输出到界面
代码如下(示例):
<script> // 1. 创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59 var scoreArr=[89,78,90,99,67,59] // 2. 求所有学生中分数最高的学生成绩,打印输出到界面 var max=scoreArr[0] // 依次让后面的数与最大值max比较,如果大于max,赋值给max // 从数组第二个元素开始循环遍历数组,进行求最大值比较 for(i=1;i<scoreArr.length;i++){ if(max <scoreArr[i]){ max=scoreArr[i] } } console.log('分数最高的学生成绩:',max) //控制台输出,所有学生中分数最高的学生成绩 // 3. 求所有学生中分数最低学生成绩,打印输出到界面 var min=scoreArr[0] // 依次让后面的数与最大值min比较,如果小于min,赋值给min // 从数组第二个元素开始循环遍历数组,进行求最小值比较 for(i=1;i<scoreArr.length;i++){ if(min > scoreArr[i]){ min=scoreArr[i] } } console.log('分数最低学生成绩:',min) //控制台输出,所有学生中分数最低学生成绩 // 4. 求不及格的学生有几个,打印输出到界面 var count=0 for(i=0;i<scoreArr.length;i++){ if(scoreArr[i]<60){ count++ } } console.log('不及格人数是 ',count) </script>
现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出 求5名学生总成绩? 求大于平均分的学生成绩?
代码如下(示例):
<script> // 现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出 // 求5名学生总成绩? // 求大于平均分的学生成绩? var arr = [98, 87, 95, 89, 77] function printArr() { for (var i = 0; i < arr.length; i++) { console.log(arr[i]) } } printArr() //总成绩 // 98 + 87 + 95 + 89 + 77 function getTotalScore() { var total = 0 for (var i = 0; i < arr.length; i++) { var item = arr[i] total += item } console.log('总成绩是 ', total) return total } var total = getTotalScore() //平均分 var avg = total / arr.length console.log('平均分 ', parseInt(avg)) //大于平均分成绩 for (var i = 0; i < arr.length; i++) { if (arr[i] > avg) { console.log(arr[i]) } } </script>
总结
以上就是今天要讲的内容,本文仅仅简单介绍了作用域、递归函数、对象、数组的相关知识,递归函数在程序中的使用是非常常见的,它可以很好地简化代码,数组的使用很重要的,它的相关语法都是以后我们经常能用到的。
今天的文章
js第五天_js等待5秒后执行分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59680.html