5-函数-下

本文介绍了JavaScript中的核心概念,包括变量的作用域(全局与局部)、生存周期,深入讲解了with语句、回调函数的使用,以及递归函数的概念和示例。此外,还探讨了匿名函数的自运行和构造函数的应用。在对象部分,阐述了如何创建和操作对象,包括添加属性和方法,以及对象销毁。最后,通过实际例子展示了事件与函数结合的运用。
摘要由CSDN通过智能技术生成

1:作用域

定义:变量起作用的范围。

在函数外部定义的变量称为全局变量,那么所有的脚本和函数都能访问到它。

在函数内部定义的变量称为局部变量(本地变量),所以只能在函数内部才能访问的到。

注:

1:如果把值赋给尚未声明的变量,该变量将自动作为全局变量声明。

2:变量作用域在函数定义的时候就已经确定下来了。

2:生存周期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行完毕后被删除。

全局变量会在页面关闭后被删除。

3:with语句(扩展)

定义:为一个或者一组语句指定默认对象。

注意:在严格模式下,with语句不能使用。

提示:with语句是运行缓慢的代码块,尽量避免使用。

4:回调函数

回调函数就是一个通过函数指针调用的函数。

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

5:递归函数

定义:允许内部程序调用自己本身的函数。

特点:

1:在函数里面调用自身。

2:必须有一个明确的递归结束条件,这个称之为递归出口。

3:不确定循环执行的次数。

注:快速排序中就使用到了递归函数。

function product (n) {
     if(n===1) {
            return 1;
     }
     return n*product(n-1);
}

6:匿名函数及调用方式

定义:顾名思义,就是没有名字的函数。

自运行:自动运行。

调用方式:

(function () {})();

7:构造函数

主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用。构造函数名称首字母一般都大写。

应用:

1:利用递归求100的阶乘。

function recursive(num) {
      return num === 1 ? 1: num * recursive(num - 1);
}

function product (n) {
      if(n===1) {
             return 1;
      }
      return n*product(n-1);
}

2:利用递归求两个数字的最大公约数。

公约数:亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。

function getNum(m, n) {
       var r = m % n;
       m = n;
       n = r;
       return r === 0 ? m : getNum(m, n);
}

3:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数求/1+1/3+...+1/n。

function fun(n) {
     var sum = 0;
     if(n % 2 === 0){
            for(var i = 1;i <= n;i++){
                   if(i % 2 == 0){
                          sum = sum + 1/i;
                   }
            }
     }else{
            for(var i = 1;i <= n;i++){
                   if(i % 2 == 1){
                          sum = sum + 1/i;
                   }
            }
     }
     return sum;
}
console.log(fun(3));

4:使用函数完成任意数字阶乘的计算。

要求:页面上输入任意数字,点击按钮后计算阶乘。

<input type="text" id="date" /><input type="submit" id="btn" value="计算" />
<script type="text/javascript">
      // 使用函数完成任意数字阶乘的计算。
      // 要求:页面上输入任意数字,点击按钮后计算阶乘。
      function $(id) {
             return document.getElementById(id);
      }
      var date = $('date');
      var btn = $('btn');
      function jiecheng(n) {
             var sum = 1;
             for(var i=1;i<=n;i++){
                    sum *= i;
             }
             return sum;
      }
      btn.onclick = function () {
             var val = date.value;
             console.log(jiecheng(val));
      }
</script>

1:对象

定义:对象就是属性的无序集合,每个属性存放一个原始值、对象或者函数。

对象的属性和行为:

属性:用数据值来描述他的状态。

行为:用来改变对象行为的方法。

2:创建对象

1:构造函数方式:

function fun1 () {}
var obj=new fun1();
alert(typeof obj);

2:Object方式:

var obj=new Object();

3:隐式声明的方式:

var obj={};
alert(typeof obj);

3:添加对象属性和方法

如果属性值是函数,我们称它为对象的方法,否则叫做属性。

1:声明的时候添加:

var obj={属性名:属性值,属性名2:属性值2,......};

2:声明以后再添加

4:访问对象属性和方法

形式为:

引用值.属性

引用值.方法();

5:删除对象属性和方法

使用delete运算符。

6:销毁对象

JS有自己的垃圾回收机制,就是在对象没有引用的时候释放内存(销毁);

使对象=null; 即可把对象销毁。

var obj={}  // 这个是个空的对象,它是一个对象,只是内容为空。
obj=null;   // 它实际上不是一个对象,是即将要创建一个对象。  null是一个空对象指针,但不是空的对象。

应用:

1:熟练掌握对象的使用。

2:使用JSON形式创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息,同时该对象包含一个自我介绍的方法,用来输出该对象的所有信息。

var student = {
    no: 111,
    cardId: 43224325435464576575645,
    age: 28,
    sex: '男',
    major: '计算机专业不是'
};

综合应用:

1:常见事件与函数的结合(可将信息打印到控制台)。

<div id="box" style="width: 100px;height: 100px;background: red;"></div>
<input type="text" value="双11大促销" id="btn" />
<script type="text/javascript">
      function $(id) {
             return document.getElementById(id);
      }
      var box = $('box');
      var btn = $('btn');
      box.ondblclick = function () {
             console.log('您刚刚双击了box');
      }
      btn.onfocus = function(){
             btn.value=''
      }
      btn.onblur = function() {
             btn.value='双11大促销'
      }
</script>

2:熟练掌握对象的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值