函数声明、函数表达式、匿名函数

函数定义和未定义的区别
var add = (function () {
    
    var counter = 0;

    return function () {
        //alert(counter)
        return counter += 1;
    };
})();
(把括号移进去和放出来的效果是一样的
  把function的外面的括号去掉效果也是一样的)

但要注意对于定义了的函数这3中写法都可以
但是对于未定义的函数
function abc(){}()这么写时就会报错
function abc(){}()这么写时就ok
要(function abc(){})()这么写才行,因为js引擎在执行的时候会先把未定义的定义上(加上var)



    1 aaa();
      function aaa(){
           alert(111)
      }
    (此函数可以自动提升位置)
    2 aaa();
      var aaa = function(){
           alert(111)
      }
    (此函数既然写了var了那么显然就位置就死了)
    (上面会报错,aaa未定义)
      aaa();
      var aaa = function(){
           alert(111)
      }
    (运行ok,可弹出111)

对于匿名函数,因为它没有名字,被调不了,所以只能以return的方式出现

再一个要注意的就是()它只执行一次

反例如下:
<!DOCTYPE html>
<html>
<body>

<p>局部变量计数。</p>

<button type="button" οnclick="myFunction()">计数!</button>


<p id="demo">0</p>

<script>
var add = function add () {
    
    var counter = 0;

    return function () {
        //alert(counter)
        return counter += 1;
    };
}();

function myFunction(){
    
    document.getElementById("demo").innerHTML = add();
}
(function e(){
   // alert('Hello World1');
})();
//函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数

    
</script>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值