1. arguments
在函数内部,arguments表示传入进来的参数,是个类似数组的Object。
function add(x, y, z) {
if (arguments.length != 3) {
throw new Error("f should called with 3 arguments!");
}
return x + y + z;
}
function max(/* ... */) {
var rst = Number.NEGATIVE_INFINITY;
for (var i = 0 ; i < arguments.length; ++i) {
if (arguments[i] > rst) {
rst = arguments[i];
}
}
return rst;
}
var f = function(x) {if (x <= 1) return 1; else return x * arguments.callee(x-1);}
document.write("1 + 2 + 3 = " + add(1, 2, 3) + "<br>");
//! document.write("1 + 2 = " + add(1, 2) + "<br>"); //throws Error
document.write("the max of 1, -10, -100, 2000, 5000, -10000 is "
+ max(1, -10, -100, 2000, 5000, -10000) + "<br>"
);
document.write("4! = " + f(4) + "<br>");
2. Javascript对待function其实和数据是一样的。
function add(x,y) {return x + y;}
function sub(x,y) {return x - y;}
function mul(x,y) {return x * y;}
function div(x,y) {return x / y;}
function operate(operator, op1, op2) {
return operator(op1, op2);
}
// i = (2 + 3) + (4 x 5)
var i = operate(add, operate(add, 2, 3), operate(mul, 4, 5));
document.write("(2 + 3) + (4 x 5) = " + i + "<br>");
3. 可以把一个function当作data赋值给一个object,这时这个function就是这个object的方法。
并且可以使用关键字this
var calculator = new Object();
calculator.op1 = 1;
calculator.op2 = 2;
calculator.op = function() {
this.result = this.op1 + this.op2;
}
calculator.op();
document.write("1 + 2 = " + calculator.result + "<br>");
4. length 和 callee两个属性
function check(args) {
if (args.length != args.callee.length) {
throw new Error("Wrong number of arguments!!!");
}
}
function add1(x, y, z) {
return x + y + z;
}
function add2(x, y, z) {
check(arguments);
return x + y + z;
}
document.write(add1("I", " love", " you!") + "<br>");
document.write(add1("I", " love") + "<br>");
document.write(add2("I", " love", " you!") + "<br>");
document.write(add2("I", " love") + "<br>");
5. call()和apply两个方法
function foo(x) {
document.write(x + "<br>");
}
foo(10);
foo.call(null,10);
6. closure
7. Function -- 作用域是不太一样的
var y = "global";
function constructFunction() {
var y = "local";
return new Function("return y"); // Does not capture the local scope!
}
// This line displays "global" because the function returned by the
// Function() constructor does not use the local scope. Had a function
// literal been used instead, this line would have displayed "local".
alert(constructFunction()()); // Displays "global"
分享到:
相关推荐
Chapter 8 function-homework.ipynb
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。接下来通过本文给大家介绍Java 8 Function函数式接口及函数式接口实例代码,需要的朋友可以参考下
8B10B 编码 解码 vhdl 代码 10B8B 包含源代码和说明文档。
S-Function 可以使用MATLAB®,C,C ,Ada,或Fortran 语言来编写。使用MEX 实用工具,将C,C ,Ada,和Fortran 语言的S-Function 编译成MEX-文件,在需要的时候,它们可与其它的MEX-文件一起动态地连接到MATLAB 中...
FAST v8 版本S_function 的资源,可以在Simulink中利用NREL的FAST code 进行风力机的仿真
If Mid(server_v1,8,Len(server_v2))<>server_v2 then chkpost=False else chkpost=True end If end function ’************************************* ’IP过滤 ’******************************...
Visual Studio .NET VB编程语言 MD5(DES) 8位密钥加密或解密文件function源代码 压缩包 : MD5 skey8位加密(文件).zip 列表 MD5 skey8位加密(文件)/ MD5 skey8位加密(文件)/bin/ MD5 skey8位加密(文件)/Form...
VC,VB,C#与flash8结合开发中callfunction的运用,找了好久,才找到的!!!
主要介绍了Java8通过Function获取字段名,需要的朋友可以参考下
SCART接口,是欧洲的标准视频接口, 传输 CVBS 信号、隔行 RGB 信号,通常厂家都把 SCART 用来传输 RGB 信号。由于三原色信号分开传输,因此在色度方面表现比 S-Video 更好。...8 Function switching I/O (L: <
CONVERSION_EXIT_PARVW_OUTPUT,SAP partner的两重值
throwing-function, 已经检查的异常使用Java 8 功能接口 适配器 函数已经检查的异常使用了 Java 8 功能接口 适配器 提供了用于解决 Java 8检查的异常的快捷方式。你可以定义抛出checked异常的函数:ThrowingFunction...
三菱GX DEVELOPER VERSION8操作手册(Function Block)pdf,三菱GX DEVELOPER VERSION8操作手册(Function Block)
// Purpose : synthesizable CRC function // * polynomial: x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + 1 // * data width: 8
8B10B Encoder_Decoder MegaCore Function User Guide
wk8_function05_cqyx_void.cpp
Chapter 8 Function Definitions and Values Chapter 9 System T of Higher-Order Recursion Part IV Finite Data Types Chapter 10 Product Types Chapter 11 Sum Types Part V Types and Propositions Chapter ...
Java 8 的 Consumer、Supplier、Predicate和Function理解
新塘单片机的keil支持包,安装这个之后才能在keil中找到新塘的单片机,才能找到仿真器,并进行仿真。
兼容性測試文檔 Win8 Metro UI Test Procedure For CNB (Function)