zoukankan      html  css  js  c++  java
  • js函数定义及一些说明

    1.javascript定义函数的三种方法
    一、function语句//这个方法比较常用
    function fn(){
      alert("这是使用function语句进行函数定义");
    }
    fn();

    二、Function()构造函数 
    var F = new Function("a","b","alert(a+b)");
    F(a,b);

    其实相当于如下代码:
    function F(a,b){
      alert(a+b);
    }

    三、函数直接量//这个方法比较常用
    var zhenn = function(){
      alert("zhenn");
    }
    zhenn();
    虽然函数直接量创建的是未命名函数,但是它的语法也规定它可以指定函数名,这在编写调用自身的递归函数时非常有用,例如: 
    var f = function fact(x) { 
    if (x <= 1) { 
    return 1; 
    } else { 
    return x * fact(x - 1); 

    };

    注:它并没有真正创建一个名为fact()函数,只是允许函数体用这个名字来引用自身。JavaScript1.5之前的版本中没有正确实现这种命名的函数直接量。

    2.其他说明
    一、构造函数
    其实从字面上理解,构造函数似乎也是函数,其实它并不是函数,而只是一种函数模型。
    要实例化才能运行,就跟我们写的类一样,要new一下才能用。
    function Fn(){ //定义构造函数  
      this.elem ="字符串";  
      this.fn = function(){    
        alert("函数");  
      }
    }
    var f = new Fn(); //实例化
    alert(f.elem);
    f.fn();

    二.Function()构造函数和函数直接量差别 Function()构造函数和函数直接量之间的差别有一点就是:使用构造函数Function()创建的函数不使用词法作用域,相反的,它们总是被顶级函数来编译,如: var y = "global";

    function constructFunction() { 
    var y = "local"; 
    //Function()构造函数 
    return new Function("return y;");//不使用局部作用域 

    function constFunction() { 
    var y = "local"; 
    //函数直接量 
    var f = function () { 
    return y;//使用局部作用域 
    }; 
    return f; 

    alert(constructFunction()()); //显示 global,因为Function()构造函数返回的函数并不使用局部作用域 
    alert(constFunction()());//显示 lobal,因为函数直接量返回的函数并使用局部作用域

    三.函数直接量详细说明
    在一些框架代码中偶尔会看到这样的写法:(如jquery)
    代码一:
    var tempObject = function doFunction() {
    ...
    }();

    代码二:
    (function doFunction() {
    ...
    })();

    如果我把这个单独拿出来,你可能也一眼就看出来这段代码的巧妙之处了--它在构造函数直接量的同时直接运行了此函数,而第二种代码相对第一种而言更简洁了(PS:第二种代码用一对小括号避免了编译错误)。

  • 相关阅读:
    快速查询 jsp页面 和 js方法
    order by 特定字段放在特定的位置
    eclipse中将java项目变成web项目
    Eclipse导入项目:No projects are found to import
    解决【Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modul】报错问题
    ORA-24247:网络访问被访问控制列表(ACL)拒绝器
    Oracle 使用UTL_HTTP发送http请求--转载
    Oracle ACL (Access Control List) 详细介绍
    PLSQL中&符号处理
    windows oracle11gR2安装使用
  • 原文地址:https://www.cnblogs.com/zkb9604/p/11529061.html
Copyright © 2011-2022 走看看