1.函数定义在解析时发生,而不是在运行时发生
alert(f(4)); // Displays 16. f( ) can be called before it is defined.
var f = 0; // This statement overwrites the property f.
function f(x) { // This "statement" defines the function f before either
return x*x; // of the lines above are executed.
}
alert(f); // Displays 0. f( ) has been overwritten by the variable f.
上面这个例子也说明了,只要在同一个作用域定义了的函数或者变量,在同一个作用域里任何位置都是可以调用的
2.调用对象:
调用对象将作为函数的一个属性
3.调用函数的特殊属性:
arguments
function f(x) {
print(x); // Displays the initial value of the argument
arguments[0] = null; // Changing the array element also changes x!
print(x); // Now displays "null"
}
arguments的属性callee:用来引用当前正在执行的函数
计算阶乘的函数:
function(x) {
if (x <= 1) return 1;
return x * arguments.callee(x-1);
}
4.Function 的属性:
length:(同arguments.callee.length)
下面一个函数实现了校验函数的实际参数个数是否满足需要:
function check(args) {
var actual = args.length; // The actual number of arguments
var expected = args.callee.length; // The expected number of arguments
if (actual != expected) { // Throw an exception if they don't match
throw new Error("Wrong number of arguments: expected: " +
expected + "; actually passed " + actual);
}
}
function f(x, y, z) {
// Check that the actual # of args matches the expected # of args
// Throw an exception if they don't match
check(arguments);
// Now do the rest of the function normally
return x + y + z;
}
等同于(在某一个特定函数,知道形参的情况下):
function f(x, y, z)
{
// First, verify that the right number of arguments was passed
if (arguments.length != 3) {
throw new Error("function f called with " + arguments.length +
"arguments, but it expects 3 arguments.");
}
// Now do the actual function...
}
5.函数“静态”属性
不用全局变量得到一个递增的数
// Create and initialize the "static" variable.
// Function declarations are processed before code is executed, so
// we really can do this assignment before the function declaration.
uniqueInteger.counter = 0;
// Here's the function. It returns a different value each time
// it is called and uses a "static" property of itself to keep track
// of the last value it returned.
function uniqueInteger() {
// Increment and return our "static" variable
return uniqueInteger.counter++;
}
6.方法apply()和call()
call和apply函数的第一个参数都是要调用的对象
f.call(o, 1, 2);
等同于
o.m = f;
o.m(1,2);
delete o.m;
apply和call相似,区别是参数变成数组的形式了
f.apply(o, [1,2]);
JavsScript1.2实现了apply,JavaScript1.5才实现 call
分享到:
相关推荐
这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨JavaScript的一些关键知识点。 1. **基础语法**:JavaScript的基础包括变量、...
#### JavaScript 运行三部曲 1. **语法分析**:检查语法错误,但不执行代码。 2. **预编译**: - 在此阶段,JavaScript引擎会创建变量和函数的作用域链,并进行变量提升。 3. **执行**:根据预编译的结果执行代码...
JavaScript学习指南第三版,学习JavaScript的同学欢迎来下载
本书“JavaScript学习指南”旨在帮助初学者和有经验的开发者深入理解和掌握JavaScript的核心概念和技术。 首先,JavaScript在网页中的主要作用是处理用户交互、操作DOM(文档对象模型)、进行AJAX(异步JavaScript...
JavaScript学习指南(第3版)》系统地介绍了JavaScript的基本语法、基本对象、调试工具与排错技术、事件处理机制、浏览器对象模型/文档对象模型(BOM/DOM)等方面的知识,并通过一个复杂的示例深入探讨了Ajax应用。...
本“JavaScript学习指南”源代码包含了深入理解并掌握JavaScript编程的关键知识点。 一、基础语法 JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、...
本压缩包文件名为“JavaScript实例自学手册”,意味着它包含了一套详细的教学材料,帮助学习者通过实例来掌握JavaScript的基础知识。JavaScript的学习通常分为几个阶段,从基本语法到高级特性,逐步深入。 首先,...
JavaScript学习是一个持续的过程,随着技术的发展,新的API和最佳实践不断涌现。因此,保持学习和关注最新的前端趋势至关重要。同时,实践是检验知识的最好方式,多做项目、参与开源社区,可以提升你的技能并积累...
JavaScript学习指南
综上所述,"JavaScript学习指南"涵盖了从基础语法到高级特性的全面内容,无论你是初学者还是有经验的开发者,都能从中获益匪浅。通过阅读《JavaScript学习指南》这本书,你可以系统地学习和掌握JavaScript的各个方面...
三、模板字符串 ES6引入了模板字符串(Template literals),用反引号(``)定义,支持内联表达式和多行书写: ```javascript var name = 'John'; var message = `你好,${name}!`; ``` 四、字符串遍历 JavaScript提供...
三、 JavaScript 中的对象 * 对象是JavaScript中的一种基本数据类型 * 对象是一种集合类型,包含多个键值对 * 对象可以使用点符号或括号符号来访问属性 * 对象可以使用构造函数来创建 四、 JavaScript 中的时间...
14.2.6 三维相册 433 14.3 时间特效 442 14.3.1 时钟提示自动关闭 442 14.3.2 日历生成器 444 14.4 窗口特效 450 14.4.1 窗口拖动 451 14.4.2 图层受标签控制显示 457 14.5 鼠标特效 460 14.5.1 鼠标方向提示 460 ...
《PHP、MySQL与JavaScript学习手册 第4版》是一本针对初学者和进阶者全面讲解这三种技术的权威指南。本书旨在帮助读者掌握Web开发的核心技能,通过理论结合实践,深入理解PHP、MySQL和JavaScript之间的协作关系,...
以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...
这篇教程——"JavaScript学习手册十四:HTML DOM-文档元素的操作(二)"深入探讨了如何使用JavaScript来操纵HTML文档中的元素,进一步提升网页动态性和交互性。 DOM是HTML和XML文档的一种结构化表示,它将网页内容...
学习HTML、CSS、JavaScript是成为一名前端开发工程师的基本功。HTML负责构建网页的骨架,CSS负责装饰这个骨架,使其美观,而JavaScript则赋予网页生命,使其具有交互性。这三者相辅相成,共同创造出丰富多彩的互联网...