JS特殊函数(Function()构造函数、函数直接量)
来源:互联网 发布:微信偷窥软件 编辑:程序博客网 时间:2024/05/19 18:11
函数是由这样的方式进行声明的:关键字 function、函数名、一组参数,以及置于括号中的待执行代码。
函数的构造语法有这三种:
- function
functionName(arg0, arg1, ... argN) { statements }//function语句 - var
function_name = new Function(arg1, arg2, ..., argN, function_body);//Function()构造函数 - var
func = function(arg0, arg1, ... argN) { statements };//函数直接量
示例:
- function
f(x){return x*x};//function语句 - var
f = new Function("x","return x*x;");//Function()构造函数 - var
f = function(x){return x*x;};//函数直接量
Function()构造函数
函数实际上是功能完整的对象 。Function类可以表示开发者定义的任何函数。用Function类直接创建函数的语法如下:
var
var
sayHi("jzj,",
function callAnotherFunc(fnFunction, vArgument) { fnFunction(vArgument); } var doAdd = new Function("iNum", "alert(iNum + 10)"); callAnotherFunc(doAdd, 10); //输出 "20"
注意:尽管可以使用 Function 构造函数创建函数,但最好不要使用它,因为用它定义函数比用传统方式要慢得多。不过,所有函数都应看作 Function 类的实例 。
如果你定义的函数没有参数,那么可以只需给构造函数传递一个字符串(即函数的主体)即可。
注意:传递给构造函数Function()的参数中没有一个用于说明它要创建的函数名。用Function()构造函数创建的未命名函数有时被称为“匿名函数”。
Function()函数允许我们动态地建立和编译一个函数,它不会将我们限制在function语句预编译的函数体中。
函数直接量
函数直接量是一个表达式,它可以定义匿名函数。函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名。语法:
var func = function(arg0, arg1, ... argN) { statements };//函数直接量
虽然函数直接量创建的是未命名函数,但是它的语法也规定它可以指定函数名,这在编写调用自身的递归函数时非常有用,例如:
var f = function fact(x) { if (x <= 1) { return 1; } else { return x * fact(x - 1); } };
注:它并没有真正创建一个名为fact()函数,只是允许函数体用这个名字来引用自身。JavaScript1.5之前的版本中没有正确实现这种命名的函数直接量。
函数引用
函数名并没有什么实质意义,它不过是用来保存函数的变量名字,可以将这个函数赋给其他变量,它仍然会以相同方式起作用:
function square(x){return x*x;} var a = square; var b = a(5);//b 为25这有点像C++中的函数指针了。
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; } //显示 global,因为Function()构造函数返回的函数并不使用局部作用域 alert(constructFunction()()); //显示 lobal,因为函数直接量返回的函数并使用局部作用域 alert(constFunction()());
- JS特殊函数(Function()构造函数、函数直接量)
- JS特殊函数(Function()构造函数、函数直接量)的区别
- JS特殊函数(Function()构造函数、函数直接量)区别介绍
- Function Literals 函数直接量
- javascript函数直接量(function(){})()
- JS的特殊函数:构造函数,直接创建对象
- Js函数字面量和Function()构造函数的区别||匿名函数
- js对象直接量,数组直接量和函数直接量(转)
- javascript中函数直接量函数构造函数应用详解
- js 多种变量定义(对象直接量,数组直接量和函数直接量)
- js 多种变量定义(对象直接量,数组直接量和函数直接量)
- js为什么需要Function()构造函数?
- #构造函数?Construct,Function
- Function构造函数
- Function构造函数
- Function() 构造函数
- 复制构造函数是特殊构造函数
- JavaScript 值和引用、构造函数和函数直接量的补充说明
- Mac开发利器之程序员编辑器MacVim学习总结
- FPGA从零开始-Verilog语法学习笔记(一)
- 百度面试题集锦
- poj2828之线段树单点更新
- 初识Erlang(1)
- JS特殊函数(Function()构造函数、函数直接量)
- 对Dns进行分析 nslookup工具的使用方法
- Java读取Txt
- GenericServlet抽象类是如何实现ServletConfig接口的
- 演讲的技巧——离散数学讲课有感
- 2013.5.15 面试经历
- hdu1060(计算n^n最高位的数字)
- poj1078-Gizilch
- 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个