zoukankan      html  css  js  c++  java
  • 学习js函数--函数定义

    函数的定义方法有三种

    1.函数表达式

    2.函数声明

    3,new function构造函数

    这边主要看下函数表达式和函数声明

    函数表达式(未省略标志的)
    
    var alertName = function nameAlert(name){
    
      alert("name" + "是大帅哥!");
    
    };
    
    alertName("博主");
    
    函数表达式(省略标志的)
    
    var alertName = function (name){
    
      alert("name" + "是大帅哥!");
    
    };
    
    alertName("博主");
    
    函数声明
    
    function nameAlert(name){
    
      alert("name" + "是大帅哥!");
    
    };
    
    nameAlert(“博主”);

    函数声明和函数表达式的关系是非常微妙的。

    1.函数声明 必须始终带有一个标识符(Identifier),也就是我们所说的函数名,而函数表达式则可以省略。

    2.ECMAScript通过上下文来区分两者。

      假如 function foo(){} 是一个赋值表达式的一部分,则认为它是一个函数表达式。而如果 function foo(){} 被包含在一个函数体内,或者位于程序(的最上层)中,则将它作为一个函数声明来解析。

      我们来看几个例子

        

        function foo(){}; // 声明,因为它是程序的一部分
     
        var bar = function foo(){}; // 表达式,因为它是赋值表达(AssignmentExpression)的一部分
     
        new function bar(){}; // 表达式,因为它是New表达式(NewExpression)的一部分
     
        (function(){
            function bar(){}; // 声明,因为它是函数体(FunctionBody)的一部分
        })();
    
        (function foo(){})这也是函数表达式,因为在它被包含在一对圆括号中的函数,在其上下文环境中,()构成了一个分组操作符,而分组操作符只能包含表达式
        
        这样就可以改一个自执行函数,例如(function foo(){})();

    3.函数声明和函数表达式还有个重要的区别:函数声明总是在作用域开始时先行解析,而函数表达式只会在遇到时才开始运算;

     举个例子 

    sayTruth();<!-- 函数声明 -->
    function sayTruth(){
        alert('myvin is handsome.');
    }
    
    sayTruth();<!-- 函数表达式 -->
    var sayTruth=function(){
        alert('myvin is handsome.');
    }

    上面第一个由于函数声明能提前解析(在浏览器预执行代码的时候就执行了,在执行代码的时候就不执行了),所以能正常输出myvin is handsome.而第二个是不能正常输出的。事实上var 声明变量的话 变量被提前声明了,只是没有初始化而已

    4.ECMAScript规范中表示,函数声明语句可以出现在全局代码中,或者内嵌在其他函数中,但是不能出现在循环、条件判、或者try/finally以及with语句中。这时候我们可以使用函数表达式

  • 相关阅读:
    Centos 系统常用编译环境
    Centos 8 阿里yum源配置
    Centos 7 端口聚合
    mount ,mkfs 工具详细说明
    linux sed命令介绍
    Curl获取相关数据
    linux磁盘读写性能监控
    单机转RAC,添加新节点
    AIX环境Java进程cpu瓶颈分析(转)
    linux系统安全之pam的介绍
  • 原文地址:https://www.cnblogs.com/jiangshichao/p/7148149.html
Copyright © 2011-2022 走看看