JavaScript函数(一)
- 关于函数(function)
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
它也是个对象。可以封装一些功能(代码),在需要的时候可以执行这些功能(代码);封装到函数中的代码不会立即执行。
使用typeof检查一个函数对象时,会返回function;
二、函数的语法:
函数就是包裹在花括号中的代码块,
当调用函数时,函数中封装的代码会按照顺序执行。
function functionname(){
要执行的代码;
}
注意:JavaScript对大小写敏感,关键字function必须是小写的,并且以与函数名称相同的大小写来调用函数。
当调用该函数时,会执行函数内的代码块。
三、函数的创建:
- 使用构造函数创建一个函数对象(可以将要封装的代码以字符串形式传递给构造函数)
81
- 使用函数声明创建一个函数
语法: 语法:function 函数名([形参1,形参2,...,形参N]){
语句
}
说明:[形参1,形参2,...,形参N]这里的[]表示可以使用参数也可以不使用参数
函数的调用:函数名([实参1,实参2,...]);
- 使用函数表达式创建一个函数/匿名函数
例:
var fun3= function(){
alert("这是一个匿名函数")
};
fun3();
- 函数的调用
语法:函数对象();
四、函数的参数:
1.在调用函数时可以向其传递值,这些值被称为参数。这些参数可以在函数中使用;可以发送任意多的参数,由逗号(,)隔开;声明函数时,请把参数作为变量来声明。变量和参数必须一致的顺序出现。第一个变量就是第一个被传递的参数给定的值,以此类推。
function myfunction(val1,val2){
这里要执行的代码;
}
- 调用函数时解析器不会检查实参的类型,所以要注意是否有可能会接收带非法的参数。如果有可能则需要对参数进行类型的检查。
- 调用函数时,解析器也不会对检查实参的数量,多余的参数将不会被赋值,如果实参少于形参的数据,则没有对应实参的形参将是undefinfed。
- 带有返回值的函数
有时我们会希望函数将值返回调用它的地方。通过return语句就可以实现,在使用return语句时,函数会停止执行,并返回指定的值。如果return后的语句不跟任何值,就相当于返回一个undefined。
例:function myfunction(){
Var x=5;
return x;
}
会返回5;
注意:整个JavaScript并不会停止执行,仅仅是函数。JavaScript将继续执行代码,从调用函数的地方。函数调用将被返回值取代;
实例:
82
“demo”元素的innerHTML将是:12
如果您仅仅希望退出函数时,也可使用return语句。返回值是可选的。
实例:
83
如果a大于b,则上面的代码将退出函数,并不会计算a和b的总和。
- 立即执行函数
函数定义完,立即被调用,这种函数叫做立即执行函数。
立即执行函数往往只会执行一次
实例:
- 函数的方法
函数也可以作为对象的属性,如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法,调用函数就是调用对象的方法,它只是名称上的区别,没有其他的区别。
- 枚举对象中的属性
使用for...in语句
语法:for(var 变量 in 对象){
//语句
}
实例:
九、作用域
- 作用域指一个变量的作用范围
- JS中一共两种作用域
1.全局作用域
2.函数作用域(局部作用域)
1.全局作用域
- 直接写在script标签的JS代码,都在全局作用域
- 全局作用域在页面打开的时候创建,在页面关闭时销毁
- 在全局作用域中有一个对象window,它代表一个浏览器的窗口,它由浏览器创建,我们可以直接使用
- 在全局作用域中:
创建的变量都会作为window对象的属性保存
全局中的函数都会作为window对象的方法保存
- 全局作用域中的变量都是全局变量
在页面的任意的部分都可以访问到
2.函数作用域
- 调用函数时创建函数作用域,函数执行完毕以后,作用域销毁
- 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
- 在函数作用域中可以访问全局变量,
但在全局作用域中无法访问到局部变量
- 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,如果没有就向上一作用域中寻找,直到找到全局作用域,如果全局作用域中仍然没有找到,则会报错ReferenceError
- 在函数中想要访问全局变量可以使用window对象