1.函数,一段JS代码,它只定义一次,但可以被执行或调用任意次。
函数定义构成:函数名称标识符,一对圆括号,一对花括号。
function函数名(){}
(1)js函数是参数化的:函数定义时会包含一个形参,是局部变量;
(2)函数调用会为形参提供实参的值;
(3)函数使用实参的值来计算返回值,成为该函数调用表达式的值;
(4)除实参外,每次调用还会拥有另一个值(本次调用的上下文),这就是this关键字的值;
(5)函数如果挂载在一个对象上,作为对象的属性,称它为对象的方法,当通过这个对象来调用函数时,该对象就是此次调用的上下文,也就是该函数的this值;
(6)用于初始化一个新创建的对象的函数是构造函数;
(7)函数即对象,程序可以随意操控;
(8)函数可以嵌套在其他函数中定义,从而可以访问他们被定义时所处的作用域中的任何变量,如此,函数构成了一个闭包(closure)(只要是个函数就有闭包,因为函数外面也有全局作用域)。
函数定义方式
2.this
3.改变函数内this的指向 js提供了三种方法 call(),apply(),bind().
1.apply()
2.call()
3.bind()
4.函数闭包
变量作用域分为全局作用域和局部作用域,函数内部可以使用全局变量,函数外部不能使用局部变量,当函数执行完毕,这个函数作用域的局部变量会被销毁。,而用闭包就可以实现局部变量的调用
//10
**5.函数命名:
**通常是动词或以动词为前缀的词组,第一个字符小写,如果函数名包含多个单词时,第一种用_分隔开,第二种是驼峰命名;有一些函数是用作内部函数或私有函数(不作为公用API的一部分)时,通常在前面加_;
6.箭头函数:让代码变得简洁;
使用ES6箭头函数语法定义函数,将原函数的“function”关键字和函数名都删掉,并使用“=>”连接参数列表和函数体。
当函数参数只有一个,括号可以省略;但是没有参数时,括号不可以省略。
当函数体只有一句时,花括号可以省略;
箭头函数没有arguments和this,支持剩余参数;
//两个都指向了obj,输出为{name:‘zhangsan’}