1.4函数

一.函数的声明及调用

1.关键字声明

function 函数名(){}

2.表达式声明

var f=function(){}

3.函数的调用

function f1(a,b){
    c=a+b
    console.log(c)
}
f1(3,5);

二.函数的返回值

如果函数中没有return,那么函数调用之后街道的返回值就是Underfined
如果函数中有return,但return后面没有值,那么函数调用之后返回值就是Underfined
函数中return之后,不管有什么代码,均不执行,return后函数的调用结束

var f=function(a,b){
    c=a+b
    return c;
}
var h=f(3,4)
console.log(h)

三.匿名函数与自调用函数

1.表达式声明:把函数本身赋值给变量
var fun=function(){}
2.自调用函数
(function(a,b){
    c=a+b
    console.log(c)
}(2,3))

四.函数作为数据类型的两种用法

1.回调(将函数作为一个值传入另一个函数中执行)

function f1(s){
    s();
}
function f2(){
    alert("我\"喜欢\"黑马'程序员'")
    alert('我\'喜欢\'黑马"程序员"')
}
f1(f2)

2.闭包(将函数作为值返回到外面)

function f1(a,b){
    c=a-b
    console.log(c)
    // return c					
    function f2(g,h){
        j=g%h
        console.log(j)
    }
    return f2(9,4)
}
var j=f1
j(10,2)             //8,1

五.作用域及js代码执行

1.作用域:变量可以起作用的范围与区域

函数里面就是局部作用域,函数外面那就是全局作用域

变量提升:在代码执行之前变量已经在编译阶段被声明了
JS代码的两个运行阶段:
1.解析(编译)阶段:语法检查,变量及函数进行声明,
2.运行阶段:变量的赋值,代码流程的运行

var a=12;
function abc(){
    alert(a);
    var a=10;//局部变量里又声明了a,所以不等于12
    //又因为变量的提升,等于Underfined;
}
abc();
如果函数声明与变量同名,那么函数声明会替代变量声明
console.log(a);
function a(){
    console.log('aaa');
}

2.作用域链

var a=3
function f1(){
    var a=1
    function f2(){
        var a=3
        function f3(){
            var a=9
            console.log(a)
        }
        f3()
    }
    f2()
}
f1()
posted @ 2020-03-15 22:08  Zh'Blog  阅读(139)  评论(0编辑  收藏  举报