zoukankan      html  css  js  c++  java
  • JavaScript函数表达式 学习篇

    定义函数的方式有两种,一种是函数声明,另一种就是函数表达式。

    函数声明的语法:

    function sayHello(){
        alert("hello")
    }

    首先是function关键字,然后是函数名。

    函数声明提升:可以先调用函数,而函数声明放在其后,因为执行函数前会读取函数声明

    sayHello();
    function sayHello(){
        alert("hello")
    }

    接下来是函数表达式创建函数的方法:

    var sayHello = function(){
        alert("hello")
    }
    sayHello();

    这样创建的函数也成为 匿名函数(拉姆达函数) 因为function后面没有标识符。

    当然了,用函数表达式创建的函数就不能像上面函数表达式创建的函数一样 先调用函数 再声明了 会报错(函数还不存在)。

    千万不要这么做:

    var a = false;
    if (a) {
        function sayHello(){
            alert("hello")
        }
    }else{
        function sayHello(){
            alert("a is false")
        }
    };

    表面上根据a的boolean值返回不同的函数,但是大多数浏览器会返回第二个声明(火狐会在a为true时返回第一个声明)。

    那怎么办呢 , 使用函数表达式就没问题了:

    var a = false;
    var sayHello;
    if (a) {
        sayHello = function(){
            alert("hello")
        }
    }else{
        sayHello = function(){
            alert("a is false")
        }
    };

    不同的函数会根据a的boolean值被赋值给sayHello。

    能创建函数再赋值给变量,也就意味着函数可以作为其它函数的返回值返回:

    function returnFunction(){
        return function subFunction(){
            alert("son function")
        }
    }
    var a = returnFunction()
    alert(a.name)

    a.name = subFunction,还可以返回匿名函数:

    function returnFunction(name){
        return function(){
            return name
        }
    }
    var a = returnFunction("white55开")
    var b = a()
    alert(b) 

    b = "white55开"

    这并不是匿名函数唯一的用途,更多用途会在开发中遇到

  • 相关阅读:
    SQL SERVER 2005 行转列
    为什么jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON
    Silverlight 布局控件
    python socket connection
    linux下缓存的查看/修改
    openstackflat 网络问题
    Fail to start neutronserver
    copy module
    python ConfigParser
    itertools 介绍
  • 原文地址:https://www.cnblogs.com/cherrylv/p/6322047.html
Copyright © 2011-2022 走看看