1.什么是函数
函数是完成某一功能的代码段
函数一可重复执行的代码段
函数方便管理和维护
2.自定义函数
1)通过function关键字
function 函数名称(参数,参数2.。){
代码段;
return 返回值;
}
注意事项:
1.函数名称不要包含特殊字符
2.函数名称最好含义明确
3.函数名称最好遵循驼峰标记法或者下划线法
4.函数名称严格区分大小写
5.函数名称如果重复回产生覆盖
6.函数可以有参数也可以没有参数,可以又一个参数也可以没有多个参数
7.函数通过return加返回值,如果没有return默认返回undefined
8.函数通过return加返回值,如果没有return默认返回undefined
9.函数不调用不执行
2.匿名函数
函数表达式可以存储在变量中,变量也可以作为一个函数使用
可以将匿名函数座位参数传递给其他函数,接收方函数就可可以通过所传递进来的函数完成某些功能
可以通过匿名函数来执行某些一次性的任务
4.通过function()构造函数
通过内置javascript函数构造器function()定义
var myFunction = new Function('a','b','return a+b');
var myFuntion = function(a,b){return a+b;};
注意:以上两种方式都是等价的,尽量避免使用new关键字
3.调用函数
作为一个函数调用,通过函数名称()进行掉用,如果有参数传递相应即可
在HTML中默认的全局对象是HTML页面本身,所以函数是属于HTML页面。在浏览器中的页面对象是浏览器窗口(window对象).所以函数会自动变为window对象的函数。也可以通过window.函数名称()进行调用
全局对象:
当函数没有被自身对象掉用,this的值就会变成全局对象,在web浏览器中全局对象是浏览器窗口window对
函数座位全局对象掉用,会使this的值称为全局对象,使用window对象作为一个变量容易造成程序崩溃
3,函数作为方法掉用
可以将函数定义为对象的方法进行掉用
4.使用构造函数调用函数
如果函数调用使用饿了new关键字,则调用了构造函数
作为回调函数调用函数 call() apply()
4.参数
1)函数可以有参数也可以没有参数,如果定义了参数,在掉用函数的时候,没有传值,默认设置为undefined
2)在调用函数时如果传递参数超过了定义时参数,js会忽略掉多余参数
3)js中不能直接写默认值,可以通过arguments对象来实现默认值效果
4)可以通古argyments对象实现可变参数的函数
5)通过值传递函数在函数体内对变量做只怪不回影响到变量本身
6)通过对象传递参数在函数体内对变量做更改会影响变量本身
5.变量的作用域
局部变量:
在函数体内声明的变量,仅在函数体内可以使用
全局变量:
函数体外声明的变量,在变量声明开始到脚本结束都可以是使用
注意:
尽量控制全局变量的数量,容易引发bug
最好总是使用var语句来声明变量
6.JavaScript全局函数
1)parseInt(string,radix):返回转换成整数的值
注意:当参数radix的值为0,或者没有设置着歌参数,paseInt()会根据string来判断数字的基数
当忽略radix,js默认数值的基数规则为:
1’如果string以0x开头,parseInt()会把string 的其余部分解析为十六进制的整数
2‘如果string以0开头,那么ECMAScript v3允许parseInt()的一个实现吧其后的字符解析为八进制或者十六进制的数
3’如果string以1-9的数字开头,parseInt()把它解析为十进制的整数
4‘字符串如果以合法致富开始,街区合法字符
5’开头和结尾的空格时允许的
6‘如果字符串的第一个字符不能被转换为数字,parseInt()会返回NaN
7’在字符串以“0开始时久的浏览器默认使用八进制基数,ECMASCript 5,默认的是十进制基数
2.parseFloat(string):返回转换成浮点型的值
该函数制定字符串中的首个字符是否是数字,如果是,则对字符串进行解析,直到到达数字的末端为止然后数字返回该数字,而不失字符串
3.isFinite(value):检测默认是否是无穷值 如果number是NaN或是+Infinity或者-Infinity的书,is Finite()返回的是false
4.isNaN:检测某个值是否是NaN 检测是否是非数字值,如果值为NaN返回true,否则返回false
5.encodeURLI(uri):将字符串编码为URI
使用注意:
1‘使用decodeURI()方法可以编码RUI(通用标识符:UniformResourceIdentifier,简称URI)
2‘对以下中具有特殊含义的AScii标点符号,endoceURI()函数是不会进行转义的:, / ? : @ & = + $ #(可以使用encodeURIczomponent方法对特殊含义的AScII标点符号进行编码)
6.encodeURIComponent(uri):将字符串编码为URI组件
1‘该方法不回对AScii字母和数字进行俾阿妈,也不会对这些AScii标点进行编码:- _ .! ~ ()
2‘其他字符(比如:;/?:@$#&这些用于分隔URI组件的标点符号),都是由一个活多个十六进制的转义序列替换的
7.decodeURIComponent():解码一个编码的URI组件
8.escape():对字符进行编码
1‘escape()函数对字符串进行编码,这样就可以在所有的计算机上读取该字符串
2’该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
3‘ escape()函数不能用于编码 URIs(通用资源标识符(UniformResourceIdentifier,简称"URI"))
9.unescape():解码由escape()编码的字符串
10.eval():将js字符串当做脚本来执行
1‘如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
2‘eval()函数是一种由函数执行的动态代码,比直接执行脚本慢很多
3‘慎重使用eval()函数,尽量不用,保证程序的安全性
11.Number(object):把对象的值转换为数字
1‘如果对象的值无法转换为数字,Number()函数返回NaN
2’如果参数的Date对象,Number()返回从1970年1月1日到现在所经历的毫秒数
12.String():把对象的值转换为字符串
string()函数返回与字符串对象的touring()方法一样
7.特殊形式的函数
函数也是数据:js中的函数也是一种数据,只不过这种特殊类型有连个重要的特性
1‘他们是可以自信的
2’他们所包含的是代码