JS函数

函数

一、作用 :封装一段待执行的代码

二、语法 :

//函数声明
function 函数名(参数列表){
    函数体
    return 返回值;
 }
//函数调用
函数名(参数列表);

1.无参数无返回值的函数

//函数声明
function f1(){
    console.log('f1被调用');
}
//函数调用
f1()

2.带参数的函数

//Js允许形参和实参的个数不匹配
function f2(n,m){//形参未传值,默认为undefined
    console.log(n*n);
    //函数内部可以使用arguments获取实际传递的参数
    console.log(arguments)
}
f2(5);//函数调用是将实际参数赋值给形式参数     //25
f2(3,9);//允许形参和实参的个数布匹配            //9

3.带有返回值的函数

function f3(a){
    //局部变量r,只能在当前函数中使用
    var r=a*a;
    var r1=a+a;
    //将函数内部的变量传递给外界使用
    //只能返回一个值,后面的代码都不执行
    return r,r1;    //不管最后返回几个值 就返回最后一个值 r1
    console.log('函数使用')//不执行
}
//全局变量r
var r = f3(4);    
console.log(r,);//8

三、使用 :函数名自定义,见名知意,命名规范参照变量的命名规范。普通函数以小写字母开头,用于区分构造函数(构造函数使用大写字母开头,定义类)

四、匿名函数:省略函数名的函数。语法为:

匿名函数自执行

 (function (形参){
  
 })(实参);

匿名函数的使用,自执行:(匿名函数的声明)(实参)

(function(){
//构建局部作用域                                                            
    console.log('匿名函数自执行');
})()

定义变量接收匿名函数

 var fn = function (){};
 fn(); //函数调用

匿名函数的使用,自执行:(匿名函数的声明)(实参)

(function(){
    //构建局部作用域
    console.log('1.匿名函数自执行');
})()
console.log('-----------------------')

var fn=function(){
    console.log('2.fn被调用');
}
fn();
console.log(2,fn)//函数
console.log('-----------------------')

//函数作为参数传递
function show(f){
    console.log('show:',f)
    f(); //因为show调用的fn的函数 所有此处的f就是fn
}
//直接传递函数名
show(fn);//f=fn
console.log('-----------------------')

//匿名函数作为参数传递
show(function(){
    console.log('4.直接传递匿名函数')
})

 

1.匿名函数自执行
 -----------------------
 
2.fn被调用
2 ƒ (){
    console.log('2.fn被调用');
}
 -----------------------
 
show: ƒ (){
    console.log('2.fn被调用');
}
2.fn被调用
 -----------------------
 
show: ƒ (){
    console.log('4.直接传递匿名函数')
}
4.直接传递匿名函数

五、作用域:JS中作用域分为全局作用域和函数作用域,以函数的{ }作为划分作用域的依据

1. 全局变量和全局函数
  只要在函数外部使用var关键字定义的变量,或函数都是全局变量和全局函数,在任何地方都可以访问
  所有省略var关键字定义的变量,一律是全局变量
2. 局部变量/局部函数
  在函数内部使用var关键字定义的变量为局部变量,函数内部定义的函数也为局部函数,只能在当前作用域中使用,外界无法访问
3. 作用域链
  局部作用域中访问变量或函数,首先从当前作用域中查找,当前作用域中没有的话,向上级作用域中查找,直至全局作用域

posted @ 2019-07-21 22:10  maplethefox  阅读(200)  评论(0编辑  收藏  举报