JS函数知识点

文章目录

    • 一:函数的定义
    • 二、函数的参数
    • 三、回调函数
    • 四、递归函数
    • 五、变量的作用域
    • 六、对this的理解
      • this的集中指向
      • 更改函数this指向

一:函数的定义

函数:可以实现某种特定功能的代码块。

定义函数:

   function 函数名([参数])
		{
		   函数体语句
		}

注意:用[ ]括起来的内容可以有,也可以没有。

  1. function是一个关键字,全部小写。

  2. 函数名:是一个标识符,建议使用驼峰命名。

  3. 函数可以有参数也可以没有参数,可以有多个参数,若有多个参数,参数之间用逗号分隔

  4. "{}"表示函数的控制范围,不能省略。

  • 内聚:模块内部结合的紧密程度

  • 耦合:模块之间结合的紧密程度

函数期望做到高内聚低耦合

二、函数的参数

  1. 形参(形式参数):在定义函数时出现在函数首部的参数,在定义函数时形参只是占位符,没有确定的值。

  2. 实参(实在参数):函数调用时出现在函数首部的参数,是实际的值。

  3. 参数的传递方式:实参将数据单向传递给形参。

  4. 当形参的个数比实参的个数多时,函数不会报错,多出的形参会是undefined类型。

  5. 当实参的个数比形参的个数多时,多余的实参会被忽略。

  6. 实参向形参传递数据是单向的,形参的改变不会影响到实参。

三、回调函数

        将一个函数A作为参数传递给函数B,在函数B内对函数A进行调用,函数A就是回调函数。

function fun(a,b){
     return a+b;
}
function cal(m,n,fun){
     return fun(m,n)
	}

四、递归函数

        函数自己调用自己.

(1) 递归的使用前提

      A、问题可以分解(即复杂的问题逐步分解成简单的问题)
	  B、分解得到的新问题的解法和原来老问题的解法是相同的
	  C、必须有明确的终止条件

(2) 递归过程

       A、自上而下分解问题
	   B、自下而上回溯得到问题的解

五、变量的作用域

(1) 全局变量:在函数外部定义的变量(显式定义)或在函数内部不用var定义的变量(隐式定义)在浏览器页面关闭后才会销毁,比较占空间。

(2) 局部变量:在函数体内部利用var关键字定义的变量。在函数调用结束后就销毁,比较节省内存资源。

(3) 块级变量:ES6中使用let关键字在语句块中定义的变量。当语句块结束后就销毁。

六、对this的理解

第一准则: this 永远指向函数 运行时 所在的对象,而不是函数被创建时所在的对象(不包含箭头函数)。

this的集中指向

  • window对象,如:console.log(this)
  • 函数中的this,谁调用函数,函数中的this就指向谁,一般指向window如:
 function foo() { 
         console.log(this);
  } 
  foo();
  • 对象中的this,一般指向对象。如:
  var obj = { name: "jack", 
              run: function() {                     
                   console.log(this.name+"run"); } } 
   obj.run();
  • 构造函数中的this,指向实例化出来的对象 :
 function Person(name) { 
                 this.name = name;
  // this 指向当前实例化的对象。
   }

更改函数this指向

JS函数知识点_第1张图片

你可能感兴趣的:(JavaScript,javascript,js)