同事给发了一段JS代码,是关于函数定义方式的,如下面所示:
var a = new Function("document.write('a')");
var b = function(){document.write('b');}
function c(){
document.write('c');
}
a();
b();
c();
执行后结果为:abc
后两种定义方式较常用,其中变量'b'是指向匿名函数的一个引用,'c'是一个被赋予了函数体的函数。
对第一种方式,在查询了若干资料后做一个小结。
Function 是Javascript的內置对象,而function(注意大小写)就是从它派生出来的,Function是一种引用类型(Functions are, of course, reference types.)。个人推测类似于第2种匿名函数的引用。
Function实例构造方式:
var instanceName = new Function([arg1 [, arg2 [, ...]] ,] body);
前几项为参数,最后为函数体,如:
var myAdd = new Function("x", "y", "return x + y");
var sum = myAdd(17, 34);
执行后sum的值为51。
Function()构造函数允许我们动态地创建和编译一个函数,它不会将我们限制在function语句预编译的函数体中。这样做带来的负面影响效应就是每次调用一个函数时,Function()构造函数都要对它进行编译。因此,在循环体中或者在经常使用的函数中,我们不应该频繁地调用这个构造函数。
匿名函数与Function()构造函数用法相似;不同的是匿名函数在使用时只被解析一次,而作为字符串传递给Function()构造函数的 JavaScript代码则在每次调用构造函数时都要被解析和编译一次。
还有一点值得注意的是,变量的作用域,Function()构造函数变量作用域是全局的。
例如:
var y="global";
function constructFunction()
{
var y="local";
var fun = new Function("alert(y);");//不捕捉局部作用域。
fun();
}
constructFunction();
弹出提示框是:global
参考:http://blog.csdn.net/rosten/archive/2010/03/07/5353694.aspx
http://www.pjhome.net/article.asp?id=625
分享到:
相关推荐
这种空格的使用可以使代码更易于阅读,特别是当函数和参数都很长时,空格可以帮助区分函数名和参数列表。 接下来,我们讨论链式调用。在JavaScript中,对象方法的链式调用是一种常见的编程模式,它允许我们在一个...
1. **区分大小写**:在 PHP 中,函数名是不区分大小写的,但在使用 `function_exists()` 进行检查时,函数名必须与实际定义的函数名完全匹配(包括大小写)。 2. **性能考量**:尽管 `function_exists()` 的使用...
在IT行业中,JavaScript是一...总的来说,实现彩票号码的区分涉及JavaScript的随机数生成、数组操作和可能的DOM操作。理解这些基础概念对于任何JavaScript开发者来说都是至关重要的,它们构成了前端开发中的重要技能。
查找元素可以使用`indexOf`方法,但需要注意,JavaScript的`indexOf`是区分大小写的,如果需要不区分大小写,需要自定义方法。 ```javascript ArrayList.prototype.indexOf = function(element) { return this....
JavaScript是弱类型语言,变量可以存储不同数据类型,包括Number、String、Boolean、Object、Function,以及特殊的数据类型Null和Undefined。基本数据类型是不可变的,而引用数据类型(如对象和函数)是可变的,它们...
- **区分大小写**:JavaScript是一种区分大小写的语言,这意味着`Variable`和`variable`会被视为两个不同的标识符。 - **注释**:单行注释使用`//`,多行注释则使用`/* ... */`。 ```javascript // This is a ...
- 变量名区分大小写,`computer` 和 `Computer` 是两个不同的变量。 - 第一个字符必须是一个字母(大小写均可)、一个下划线(`_`) 或者一个美元符号(`$`)。 - 后续字符可以是字母、数字、下划线或美元符号。 - ...
逻辑运算符`&&`和`||`与位运算符`&`和`|`在用途上有所区分;还有`typeof`运算符用于获取表达式的数据类型。 JavaScript的控制流结构,如条件语句(if)、选择结构(switch)、循环语句(while、do...while、for),...
### JavaScript学习习题和实例详解 #### 一、JavaScript字符集 JavaScript采用了Unicode字符集编码。选择Unicode的主要原因是16位的Unicode编码可以表示几乎所有的书面语言,这为JavaScript提供了强大的国际化支持...
### JavaScript基础概述与核心知识点详解 ...以上内容涵盖了JavaScript的基础语法、数据类型、字符串处理、数组操作、函数、正则表达式、数学计算以及面向对象编程的概念,是学习和掌握JavaScript的重要知识点。
1. 数字类型:JavaScript没有区分整数和浮点数,统称为`number`。 2. 字符串类型:可以用单引号`' '`或双引号`" "`来定义。 3. 布尔类型:`true`和`false`。 4. 特殊类型:`undefined`、`null`、`NaN`(Not a Number...
在JavaScript编程中,自定义类型是用来创建具有特定属性和方法的复杂数据结构的一种方式。自定义类型的实现有多种模式,每种模式都有其使用场景和优缺点。下面详细解释各种模式的知识点。 1. 直接创建模式 直接创建...
Crockford是一位著名的JavaScript专家,他提出的许多概念如JSON格式已经成为Web开发的标准之一。这份规范参考了Sun公司的Java编码规范,但由于JavaScript与Java存在显著差异,因此进行了大量调整以适应JavaScript的...
匿名函数外面的括号用于区分函数表达式和函数声明,防止语法解析错误。 2. **全局变量导入**:JavaScript允许隐式创建全局变量,但这种方式容易导致命名冲突和难以维护的代码。通过将全局变量作为匿名函数的参数...
需要注意的是,JavaScript是区分大小写的,因此“function”与“Function”在语言中是不同的概念。 undefined表示未定义或未知的状态,不能直接处理。null则代表一个有概念但无具体值的存在,尽管typeof(null)返回...
### JavaScript中apply、call和bind的用法区分 在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,...
这里的`RegisterStartupScript`方法需要三个参数:当前类型(`this.GetType()`)、一个唯一的ID(用于区分不同的脚本块,避免重复注册)以及要执行的JavaScript代码。 **关键点解析:** - **类型获取**:`this....