JavaScript函数

知识点一:函数

1、概念:具有相同的特定功能的代码封装在一起,就是函数

2、定义:     

①    函数表达式

var $ = function () {

    console.log("函数表达式");

  }

②    数的声明    

 function fn1() {

    console.log("函数的声明");

  }

声明后的函数并不会执行

4、 函数的调用

①    方法()

5、函数的参数

在函数小括号中,具有向函数内部或者外部传递信息的作用

形式参数:在函数的定义中===形参

实际参数:在函数的调用中===实参

6、函数的返回值

1、定义:函数的调用就是函数的返回值

2、如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined

3、  如果函数使用 return语句,那么跟在return后面的值,就成了函数的返回值

4、  如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined

5、 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。

知识点二:函数其他

1、函数的命名规范

(1)     规则:    

1)        由字母、数字、下划线、$符号组成,不能以数字开头

2)         不能是关键字和保留字,例如:for,while, this, name

3)          区分大小写

(2)     规范:

1)         函数名必须有意义

2)          遵守驼峰命名法

3)          建议不要用$作为函数名

2、函数的覆盖问题

(1)     同名函数后边的函数会覆盖前边的函数

3、匿名函数

(1)     定义:没有名字的函数

(2)     调用:自调用

(3)     例如:

 (function () {

    console.log("匿名函数");

  })()

4、函数也是一种数据类型

(1)     是一种引用数据类型

(2)     通过typeof判断返回function

5、函数可以作为参数传入

function fn5(x) {

    console.log(x);

    x();

  }

  fn5(function () { console.log("可以作为参数传入") })

6、 函数可以作为参数反出

function fn6(x) {

    return x;

  }

  fn6(function () {

    console.log("可以作为参数反出");

  })()

知识点三:预解析

1、概念:

①    js通过浏览器内核中JavaScript引擎解析,在解析之前,会进行一项工作,预解析。会对以定义function,var进行提升

2、函数提升

3、变量的提升

只会进行声明的提升,不会进行赋值提升

4、同名函数的覆盖的提升

同名的函数,后面的会覆盖前面的

5、变量和函数同名

1、顺序的情况下:变量会覆盖函数名

2、提升的情况下:函数会提升,变量会忽略

6、不可能会提升到作用域外

在window中定义的变量:全局变量

在函数中定义的变量:局部变量(只能在当前作作用域中使用)

7、函数表达式并不会被提升

知识点四:作用域链

1、定义

①    函数内指向函数外的链式结构。就称作作用域链

2、全局作用域=全局变量

3、局部作用域=局部变量

只有函数才能产生局部作用域

4、局部变量

①    只在当前的作用域下是有效的

②    只有函数才能产生作用域

5、用域链查找规则

①    先从当前的作用中查找,如果没有,从父作用中查找

②    如果父作用域没有,还继续往上查找,直接到全局作用域

③    如果全局没有,就报错

6、注意:

①    声明变量使用`var`, 如果不使用`var`声明的变量就是全局变量( 禁用 )

原文地址:https://www.cnblogs.com/wangxue13/p/13537948.html