JavaScript函数的命名⽅式
函数的命名⽅式
JavaScript代码服⽤单位是函数,函数可以包含⼀段可执⾏代码,也可以接受调⽤者传⼊的参数。JavaScript定义函数主要有以下三种⽅式:
1. 第⼀种⽅式:命名函数
<script>
function函数名(参数列表){//function声明函数的关键字
要执⾏的语句块;
}
function myAge(age){
document.write('我的年龄是'+ age)//我的年龄是19
}
myAge(19)//函数不调⽤,不执⾏
</script>
2. 第⼆种:匿名函数
<script>
function(参数列表){//同引⽤函数调⽤这个函数
要执⾏的语句块
}
//匿名函数
var a=function(age){
document.write('我的年龄是'+ age)//我的年龄是19
}
a(19)
</script>
命名函数和匿名函数不同,命名函数前后都可调⽤,匿名函数只能在函数后⾯调⽤才能出现
3. 第三种:使⽤function类构建匿名函数
<script>
new function(参数列表,函数执⾏体);//构造⼀个函数,参数列表和函数执⾏体都要⽤双引号括起来
//构建匿名函数
var a =new Function('name','age',"document.write('我的姓名:'+name+',我的年龄:'+age)")//我的姓名:⼩红,我的年龄:20
a("⼩红",20)
</script>
**强调:**函数的形参不需要做类型声明,也不要加var,这是JavaScript属于弱类型语⾔的⼀种表现
⼤多数优秀的JavaScript框架都使⽤第⼆种“匿名函数”语法来定义函数,他的可读性最好,所以我们必须掌握使⽤它。
函数常⽤的特殊语句
函数的返回值
return
JavaScript中的函数没有声明返回类型,当函数想要返回值的时候直接加上return“值”语句即可,假如不加就代表此函数没有任何返回值<script>
//return
function show(){
return function(){
alert("美⼥")//打印美⼥
}
}
var f=show();
f();
</script>
局部变量和局部函数
javascript全局数组根据变量的定义范围不同,变量有全局变量和局部变量之分。
在函数外部直接定义的变量是全局变量,在函数中定义的变量成为局部变量,局部变量只能在函数内有效,如果全局变量和局部变量使⽤相同的变量,则局部变量将覆盖全局变量。
与局部变量对应的是局部函数,局部函数实在函数中定义的,全局变量可以在外部直接访问,内部变量只能在函数内部访问
注意:全局变量不能调⽤局部变量,局部变量可以调⽤内部变量
<script>
//全局变量
var name="美⼥"//全局变量
function show(){
var name="美⼥"
var age=10;
alert(name+"---"+age);//打印美⼥---10
}
alert(name)//全局变量和局部变量使⽤相同的变量,则局部变量将覆盖全局变量。
alert(age)//全局变量可以在外部直接访问,内部变量只能在函数内部访问
show();
//局部变量
function f1(){
var name ="张三";
function f2(){
var age =30;
alert(name);
}
//alert(age);//错误的全局函数是不能访问局部函数内部的局部变量
f2();
}
f1();
//闭包:闭包是指有权访问另⼀个函数作⽤域中变量的函数
function f3(){
var n=1;
function f4(){
alert(n);
}
return f4;
}
var f=f3();
f();
</script>
JavaScript的3种调⽤函数的⽅式:
1. 直接调⽤函数:这种函数的调⽤是最常见、最普通的⽅式
对象.函数引⽤:
//当声明⼀个函数没有指明分配给哪个对象使⽤的时候,默认分配给的是window对象。
<scrit>
function show(name,age) {
alert("你好"+name+",今年"+age)
}
window.show('张三','20') //对象.函数名默认分配给的是window对象
</script>
2. 以call⽅法调⽤函数:
函数引⽤.call(调⽤者,参数1,参数2,…)
<scrit>
function show(name,age) {
alert("你好,我是"+name+",今年"+age)
}
show.call(window,'张三','20');
</script>
3. 以apply⽅法调⽤函数:
函数引⽤.apply(调⽤者,arguments)
//arguments相当于是数组,⽤来存放多个参数。和call调⽤⽅式类似
<scrit>
function show(name,age) {
alert("你好,我是"+name+",今年"+age)
}
show.apply(window,['张三','20']);
</script>
对⽅法2和⽅法3的⼀个扩展⼩案例
<script>
function show(arr,func){
func.call(window,arr);
}
show([1,2,3,4],function(arr){//⽤匿名函数传递
for(i in arr){//遍历这个函数
document.write(arr[i]+"<br/>")
}
})
document.write("_______"+"<br>")
function show(arr,func){
func.apply(window,[arr]);
}
show([1,2,3,4],function(arr){//以数组形式传参
for(i in arr){//遍历这个函数
document.write(arr[i]+"<br/>")
}
})
//第⼀种⽐较常⽤,但第⼆种和第三种⽐较灵活
</script>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论