js函数的深入理解

1.函数声明

2.函数表达式

3.匿名函数

函数声明:function fnName(){,,,} 使用function关键字声明一个函数  再指定一个函数名  叫做函数声明

函数表达式:functioin(){...}  使用function关键字声明一个函数  不指定函数名 最后将函数赋值给一个变量 叫做函数表达式

 匿名函数:function(){。。。}使用function关键字声明一个函数,不指定函数名,也不赋值给变量  叫做匿名函数  匿名函数属于函数表达式,匿名函数有很多作用,赋值给一个变量成为一个函数,赋予给一个时间成为一个程序。

函数表达式和函数声明的区别是:

一.函数声明提升,而函数表达式必须等到javascript引擎执行到她所在的行时,才会一行一行的解析函数表达式

二.函数表达式后面可以加括号 表示代码执行到此的时候立即执行,而函数声明不可以

代码示例:
fnName();
function fnName(){
    ...
}
//以上代码正常,因为‘提升'了函数声明,函数调用可在函数声明之前
fnName();
var fnName = function (){
    ...
}
//以上代码报错,fnName还未保存对函数的引用,函数调用必须在函数表达式之后
var fnName=function(){
    alert('Hello World');
}();
//以上代码正确  函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数

function foo(){
   alert('测试是否弹窗')
}()
SyntaxError: Unexpected token )
报错因为分组操作符需要包含表达式

var fnName = function(){...}()

!function(){}()

+function(){}()

-function(){}()

上面的函数当代码执行到此的时候都会立即执行    !+-

 

重点在这里   两种自执行函数模式

现在看看

// 下面2个括弧()都会立即执行

(function () { /* code */ } ());   // 推荐使用这个
(function () { /* code */ })();    // 但是这个也是可以用的

例如:

// 自执行函数   第一种
    (function start(n1,n2){   //不能加函数名称 
        console.log("这是函数声明方式的自执行的第一种写法,结果为:"+(n1+n2))
    })(10,100)//110
// 自执行函数 第二种
    (function (n1,n2){        //不能加函数名称
        console.log("这是匿名函数的自执行的第二种写法,结果为:"+(n1+n2))
    }(10,100))//110

结果是立即调用()里面的函数    可以用function(){}写建立一个私有域    私有域里可以访问全局变量  全局变量却访问不了 私有域内的变量,所以(function(){}())内部的变量不会和外部的变量发生冲突  俗称  匿名包裹器和命名空间

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值