• 函数声明与函数表达式的不同


    简单的例子:
    主要是 声明提前的问题。
    <!DOCTYPE html>
    var demo={
        speak:function(name){
            return{
                a:function z(name){
                    alert(name+'~(≧▽≦)/~啦啦啦');
                }
            }
        },
    }
    
    demo.speak().a('有点晕');
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
        </body>
    </html>
    <script>
    //    var tensquared=(function(x){
    //        alert(x*x);
    //    }(10))
    
        //函数声明:
        shengming(1); //可以正常读到函数,声明提前
        //函数表达式:
        biaodashi(2); //报错  函数表达式要先声明再用 函数表达式.html:17 Uncaught TypeError: biaodashi is not a function
        //函数声明:
        function shengming(n){
            alert(n);
        };
        //函数表达式:
        var biaodashi=function(n){
            alert(n);
        };
    </script>

     还有一点不同:函数定义表达式可以出现在javascript代码的任意地方,但是函数声明就不能出现在循环和条件判断中,或者try/cache/finally以及with语句中。

    函数调用

    1:普通函数调用:

    function demo(x){
            return x+1;
        }
        demo(2); //3

    可以用来判定是否进入严格模式:

    'use strict'; //进入严格模式
    
    var strict=(function(){
        if(!this)
        alert('严格模式');
        else
        alert('非严格模式');
    }())

     2.当做方法调用:

    var demo={
        speak:function(name){
            alert(name+'~(≧▽≦)/~啦啦啦');
        },
    }
    
    demo.speak('小米');

     方法调用与普通调用的区别 在于上下文;

    方法调用还可以通过【】的形式:

    var demo={
        speak:function(name){
            alert(name+'~(≧▽≦)/~啦啦啦');
        },
    }
    demo[
    'speak']('小小');

    3.更复杂点的:

    var demo={
        speak:function(name){
            return{
                a:function z(name){
                    alert(name+'~(≧▽≦)/~啦啦啦');
                }
            }
        },
    }
    
    demo.speak().a('有点晕');

     上面的例子,引入了一个概念:方法链;

    当方法的返回值是个对象,这个对象还可以在调用它的方法。这种方法调用序列中每次的调用结果都是另一个表达式的组成部分。

  • 相关阅读:
    二级域名配置
    环信框架-消息模块
    屏幕适配问题
    iOS-NSSession
    环信框架使用
    静态UITableView
    __weak存在的问题
    MVVM与MVC
    iOS通知与多线程
    block
  • 原文地址:https://www.cnblogs.com/gaidalou/p/5955454.html
Copyright © 2020-2023  润新知