自定义函数定义

1.函数通过function关键字创建,函数创建格式:



function 函数名称([参数,...]){
    代码段;
    return 返回值;
}



注意事项:

  • 函数名称不要包含特殊字符
  • 函数名称最好含义明确
  • 函数名称最好遵循驼峰标记法或者下划线法
  • 函数名称严格区分大小写
  • 函数名称如果重复会产生覆盖
  • 函数可以有参数也可以没有参数,可以有一个参数也可以有多个参数
  • 函数通过return加返回值,如果没有return 默认返回undefined
  • 函数不调用不执行

匿名函数

  • 函数表达式可以存储在变量中,变量也可以作为一个函数使用
  • 可以将匿名函数作为参数传递给其它函数,接收方函数就可以通过所传递进来的函数完成某些功能
  • 可以通过匿名函数来执行某些一次性的任务

通过Function()构造函数

通过内置JavaScrip函数构造器(Function)定义:

  • var myFunction=new Function('a','b','return a+b');
  • var myFunction=function(a,b){return a+b;};

注意:

  1. 以上两种方式是等价的
  2. 尽量避免使用new关键字

调用函数

  1. 作为一个函数调用:
  1. 通过函数名称()进行调用,如果有参数传递相应参数即可
  2. 在HTML中默认的全局对象是HTML页面本身,所以函数是属于HTML页面。在浏览器中的页面对象是浏览器窗口(window对象).所以函数会自动变为window对象的函数。也可以通过window.函数名称()进行调用
  1. 全局对象
  1. 当函数没有被自身的对象调用时,this的值就会变成全局对象。在web浏览器中全局对象是浏览器窗口window对。
  2. 函数作为全局对象调用,会使this的值称为全局对象。使用window对象作为一个变量容易造成程序崩溃
  1. 函数作为方法调用
  1. 可以将函数定义为对象的方法进行调用
  1. 使用构造函数调用函数
  1. 如果在函数调用前使用了new关键字,则调用了构造函数
  1. 作为回调函数调用函数
  1. call()
  2. apply()

参数

  • 函数可以有参数也可以没有参数,如果定义了参数,在调用函数的时候没有传值,某人设置为undefined
  • 在调用函数时候如果传递参数超过了定义时参数,js会忽略掉多余参数
  • js中不能直接写默认值,可以通过arguments对象来实现默认值效果
  • 可以通过arguments对象实现可变参数的函数
  • 通过值换地参数在函数体内对变量做修改不会影响变量本身
  • 通过对象传递参数在函数体内对变量做更改会影响变量本身

变量的作用域

  • 局部变量  
  • 在函数体内声明的变量,仅在函数体内可以用  
  • 全局变量
  • 函数体外生命的变量,在变量声明开始到脚本结束都可以使用  
  • 注意
  • 尽量控制全局变量的数量,容易引发bug
  • 最高使用var语句来声明变量        

 javascrip全局函数

待续。。

特殊形式的函数

  • 函数也是数据
  • javascrip中的函数也是一种数据类型,只不过这种类型只有两个重要的特性  
  • 他们所包含的是代码
  • 他们是可执行的