`
xihuyu2000
  • 浏览: 32209 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

function介绍

阅读更多
/**
* 1.函数定义
* 函数定义最常用的方法是调用function语句。该语句由关键词function构成,紧随其后跟的是函数名(可选)、参数列表(使用括号括起来,括号必选,列表可选,参数使用逗号分割开来)、函数体(大括号括起来,大括号必选,内容可选)。
*/
//函数可以有返回值,使用return 语句;也可以没有返回值
function test_return(){
return window.alert("test_call");
}

/**
* 2.使用Function()构造函数和new定义函数。
* 下面的定义等价于 function f(x, y){return x*y;}
* Function构造函数可以接受任意多个字符串参数。它的最后一个参数是函数的主体,其中可以包含任何javascript语句,语句之间使用分号分割,其他的参数都是说明函数的参数的。
* 注意:传递给构造函数Function()的参数中没有一个用来说明函数名的,所以也成“匿名函数”。
*/
var f = new Function("x", "y", "return x*y");

/**
* 3.使用函数直接量定义函数
* 函数直接量是一个表达式,它可以定义匿名函数,结尾有分号。函数直接量的语法和function语句非常相似,只不过他被用作表达式,而不是语句,而且也无需制定函数名。
* 函数直接量表达式指定的函数可以存储在一个变量中,可以传递给其他的函数甚至被直接调用。
*/
function f1(x, y){return x*y;} //使用function语句定义
var f2 = new Function("x", "y", "return x*y;"); //使用Function和new定义
var f3 = function(x, y){return x*y;}; //使用函数直接量定义,赋值给变量f3

a[0] = function(x){return x*x;} //定义一个函数并保存它
a.sort(function(a, b){return a-b;}); //定义一个函数,把它传递给另一个函数
var tensquared = (function(x){return x*x;})(10); //定义一个函数并调用它,把结果赋值给一个变量

/**
* 4.作为数据的函数
* 函数可以被赋值给变量、存储在对象的属性中或存储在数组的元素中、传递给函数等等。
* 下面创建了一个函数对象,并把这个对象赋值给了变量square。实际上,函数名并没有什么实质意义,它不过是用来存放函数的变量的名字。
*/
function square(x){return x*x;}

/**
* 函数作为数据的例子
*/

//我们定义了四个简单的函数
function add(x, y){return x+y;}
function substract(x, y){return x-y;}
function multiply(x, y){return x*y;}
function divide(x, y){return x/y;}
//下面这个函数使用上面某个函数作为参数,同时传入两个参数,返回运算结果
function operate(ope1, ope2, ope){
return ope(ope1, ope2);
}
//可以使用上面的函数计算(2+3)-(4*5)
var i = operate(operate(add, 2, 3), operate(multiply, 4, 5), substract);

//下面把函数保存到数组中,使用函数直接量形式定义
var opes = new Object();
opes['add'] = function(x, y){return x+y;};
opes['substract'] = function(x, y){return x-y;};
opes['multiply'] = function(x, y){return x*y;};
opes['divide'] = function(x, y){return x/y;};
opes['pow'] = Math.pow;

//以下的函数将运算符作为参数,在数组中检索这个运算符,然后对运算符调用检索到的函数。注意调用这个运算符函数的语法。
function operate2(ope1, ope2, opt_name){
if(opes[opt_name]==null)return "unknown operator";
else return opes[opt_name](ope1, ope2);
}

//下面计算("hello" + " " + "world");
var j = operate2("hello", operate2(" ", "world", "add"), "add");

/**
* 5.arguments标识符
* javascript函数的主体实在局部作用域中执行的,该作用域不同于全局作用域。这个新作用域是通过把调用对象添加到作用域链的头部
* 创建的。因为调用对象是作用域链的一部分,所有在函数体内可以把这个对象属性作为变量来访问。用var语句声明的局部变量创建后作为调用对象的属性,而且函数的形式参数也可用于对象的属性。
* 除了局部变量和形式参数外,调用对象还定义了一个特殊属性,名为arguments。这个属性引用了另外一个特殊的对象——Arguments对象。该对象属于函数调用环境。
* 在一个函数体内,标识符arguments具有特殊含义。它是调用对象的一个特殊属性,用来引用Arguments对象。Arguments对象就像数组,可以按照数字获取传递给函数的参数值。
* 但是它并非真正的Array对象。Arguments对象也定义了callee属性。
*
* 尽管定义函数时有固顶数目的命名参数,但是当调用这个函数时,传递给它的参数数目却可以是任意的。arguments属性支持[]运算符。
* 注意:中括号里面是索引值,从0开始。arguments[]可以完全地存取那些实际参数值,即使某些参数没有被定义。如arguments[0]表示第一个形式参数的值。
*
* 使用arguments[]可以帮助我们编写能够接受任意数目实际参数的函数。
*
* arguments[]不是数组,它表示的是Arguments对象。Arguments对象有一个非同寻常的特性。当函数定义了形式参数时,arguments[]里面存放的元素就是形式参数的值。arguments[]和形式参数不过是引用同一变量的两种不同方法。
* 通过任何一种方式改变值都会影响两一种方式的值。
*
* 下面定义了一个匿名函数(第一个括号内的函数),函数体首先输出参数值,然后赋值null,再次输出参数值。定义函数后调用它,同时传递给它一个实际参数5.
*/
(function(x){window.alert(x); x=null; window.alert(x);})(5); //第一次输出是5,第二次输出是null

/**
* 6.callee属性
* Arguments对象除了有arguments属性,还有callee属性,用来引用当前正在执行的函数。这对匿名函数调用自身非常有用。
* 下面是一个计算阶乘的匿名函数.
*/
var v = function(x){if(x<=1)return 1; else return x*arguments.callee(x-1);}
window.alert(v(5));

/**
* 7.Function函数对象
* 函数是一种javascript对象,就行String对象和Date对象一样。同样具有属性和方法。
* Function对象具有length,这是个只读属性,该属性确切地说明了一个函数声明的形式参数的个数。不同于arguments的属性,arguments.length表示函数实际接收到的参数个数。
* 下面的check函数会检测函数接收到的实际参数个数和定义的参数个数是否相等,不等的话抛出错误。f函数应用了check函数。最后输出应该报错。
* 另外,Function对象还有一个prototype属性,表示预定义的原型对象。原型对象在使用new运算符把函数作为构造函数时起作用。它在定义新的对象类型时起着非常重要的作用。
*/
function check(args){
var actual = args.length;
var expected = args.callee.length;
if(actual != expected){
throw new Error("Wrong number of arguments: expected:"+expected+" ;but actually passed "+actual);
}
}

function f(x, y, z){
check(arguments);
return x+y+z;
}

window.alert(f(2,5));

/**
* 8.Function对象的apply方法和call方法
* 所有函数都有这两个方法。使用这两个方法就像用其他对象的方法医用。call()和apply()的第一个参数都是要调用的函数的对象,在函数体内这一参数是关键字this的值。call()的剩余参数是传递给要调用的函数的参数。
*/
var o = new Object();
function f(x, y){return x+y;}
o.m = f;
window.alert(o.m(2,5)); //以上两行代码等价于f.call(o,2,5);

//apply()方法的参数和call()方法类似,只是传递给函数的参数时候数组指定的。如上面可以写成f.apply(o,[2,5]);
3
0
分享到:
评论

相关推荐

    Oracle Form Builder內置function

    ### Oracle Form Builder 内置Function介绍 #### 一、概述 在Oracle Forms开发过程中,Form Builder作为核心组件之一,提供了大量的内置函数(functions),这些函数能够帮助开发者更高效地完成表单逻辑的设计与...

    MATLAB的S-Function教程

    通过以上内容的详细介绍,我们可以看到S-Function作为一种重要的工具,极大地扩展了Simulink的功能,并为用户提供了灵活的编程方式来解决复杂的问题。无论是使用MATLAB语言还是C/C++等其他语言编写S-Function,都...

    S-function模块案例详解(MATLAB程序)

    在MATLAB环境中,Simulink是用于系统建模和仿真的一种强大的工具,而S-function则是Simulink中的自定义功能模块,允许用户扩展Simulink的功能,以满足特定的计算需求。本篇将深入探讨S-function模块在蹦极系统案例中...

    Sqlserver 自定义函数 Function使用介绍

    在创建标量函数时,其语法包括`CREATE FUNCTION`,定义参数列表,返回值类型,并使用`BEGIN...END`块来编写函数体。例如,创建一个查找员工工号的函数`F_GONGHAO`,它接受一个员工姓名作为输入,返回相应的工号: ...

    MATLAB的S-Function编写指导

    本章首先介绍了S-Function的基本概念及其用途。 **什么是S-Function** S-Function(System Function),即系统函数,是Simulink提供的一个接口,用于扩展其功能。用户可以通过S-Function来实现Simulink标准库中...

    s-function编写指导

    本章节将详细介绍S-Function的基础概念、为何选择使用S-Function以及如何编写自己的S-Function。 #### 第二章:什么是S-Function? S-Function是一种用户定义的Simulink块,它可以是MATLAB M文件或编译后的语言如C...

    S-Function编写指导

    5. **Ada S-Function**:介绍如何使用Ada语言编写S-Function。 #### 编写M-SFUNCTION 在编写M-SFunction时,需要注意以下几点: - **概述**:了解S-Function的基本结构和工作流程。 - **S-Function参数**:理解...

    通过 S-Function 集成 C 代码进行仿真

    文档还介绍了用手工填写方式实现S-Function的具体步骤,即通过编写C代码来实现S-Function模块。其中,提供了一个简单的例子,说明如何通过编写C代码来实现一个将输入信号乘以2的模块。在这个例子中,使用了Simulink...

    S-function 使用指导

    文档详细介绍了如何将LEVEL1 CMEX S-Function升级到LEVEL2版本。 #### 创建C++ S-Function 除了C语言之外,文档还提供了如何使用C++创建S-Function的指南,这对于需要更高级数据结构和抽象的项目尤其有用。 #### ...

    简谈FPGA verilog中的function用法与例子

    通过上述知识点的介绍,可以看出Verilog中function的定义和使用为硬件设计人员提供了便利,使得设计中的逻辑复用更加高效。然而,必须遵循Verilog语言定义的规则和限制,以确保设计的正确性和可靠性。

    sfunction使用手册

    通过上述介绍可以看出,S-Function 是 Simulink 中一项非常重要的功能,它不仅提供了高度的灵活性和扩展性,还支持复杂的算法开发。无论是学术研究还是工业应用,掌握 S-Function 的使用技巧都是非常有价值的。希望...

    Matlab S-Function的编写

    3. **自动生成S-Function:**介绍了一些工具和技术,可以辅助自动产生S-Function的代码框架。 #### 实现块特性 - **对话框参数:**定义了如何在S-Function的对话框中显示和编辑参数。 - **可调参数:**允许用户在...

    USB2.0标准规范总结

    八、FUNCTION介绍 FUNCTION是一种可以收发数据、可以被HOST配置的、具有特定功能的USB设备。FUNCTION可以是一个独立的设备,也可以是复合设备的一部分。每个FUNCTION必须包含它的配置信息、能力描述、资源需求。...

    S-Function使用手册英文资料

    本手册详细介绍了如何创建、配置和使用S-Functions,是学习和应用这一高级功能的重要参考资料。 一、S-Function概述 S-Function是MATLAB编程语言(通常为C或MATLAB MEX文件)实现的Simulink模块,它可以与Simulink...

    function_exists函数详解

    ### function_exists() 函数详解 在PHP编程语言中,`function_exists()` 是一个非常实用的内置函数...通过上面的介绍,相信您已经掌握了 `function_exists()` 的基本用法及其应用场景,希望这对您的编程工作有所帮助。

    理解C++编程中的std::function函数封装

    先来看看下面这两行代码: std::function&lt;void&gt; onKeyPressed; std::function&lt;void&gt; onKeyReleased; 这两行代码是从Cocos2d-x...std::function介绍 类模版std::function是一种通用、多态的函数封装。std::function的

    使用S-Function函数实现离散PID控制器,并建立simulink仿真模型

    下面将详细介绍如何使用S-Function来实现离散PID控制器以及建立Simulink仿真模型。 1. **S-Function基础** S-Function是Simulink中的一个特殊模块,它允许用户用C、C++或者MATLAB(MEX文件)语言编写底层代码,...

    S-Function编写指导(matlab中simulink应用)

    通过上述内容的介绍,我们可以看到S-Function是Simulink中一个非常强大的功能,它不仅能够帮助用户解决复杂问题,还能极大地扩展Simulink的应用范围。无论是科研还是工程实践中,掌握S-Function的编写都是极其有用的...

Global site tag (gtag.js) - Google Analytics