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

基础的 JavaScript 第1部分:函数

 
阅读更多

原文见:http://elegantcode.com/2010/10/22/basic-javascript-part-1-functions/,这里只是阅读摘要。

1. 自执行函数(Self-executing functions)

这样的函数在定义后会立即被调用执行。示例:

( function() { alert("Hellow Mars"); } ) ()

这基本上就是一个匿名函数,而且会立即调用,因为最后有一对圆括号。可以为函数指定参数:

( function(planet) { alert("Hello " + planet); } )("Jupiter")

声明在自执行函数中的变量都不能被函数外部所访问。这样就提供了一种封装。

2. 内部函数(Inner functions)

即在一个函数内部定义函数。示例:

function show() {
function getPlanet() {
return "Saturn";
}

alert("Hello " + getPlanet());
}

getPlanet()函数是一个私有函数,只能由show()函数内部的代码调用。因此主要的好处还是封装。

3. 自重写函数(Self-rewriting functions)

把函数赋给一个变量是可行的,没有什么特别的。但是如果在函数内部把一个新的函数赋给同一个变量的话,那么可以认为它是一种能够重写自己的函数。示例:

var doSomething = function() {
alert("Doing something useful");

doSomething = function() {
alert("But I already did something!");
}
}

当doSomething()函数执行过后,它就“变”成另外一个函数了。这适合于“一次性”初始化的工作,或者可能在嗅探不同浏览器上发挥作用。

4. 闭包(Closures)

要理解闭包,就要先理解作用域。JavaScript使用“函数作用域”而不是“块作用域”。这也叫做“作用域链”。

function foo() {
var x = 8;
if (x > 0)
{
var y = 12;
}
(
function bar() {
alert(x + y);
}
)();
}

上面的代码是合法的。变量 x 和 y 在自执行函数 bar() 内部都是可用的。这个特性也解释了为什么最好在 JavaScript 中把所有的变量都声明在函数的开头,因为这样可以防止后面出现讨厌的情况。

JavaScript函数还有“词法作用域”。这意味着函数不是在运行时而是在定义时创建它的作用域

看一个关于闭包的非常简单的例子:

function foo()
{
var x = 15;
return function() {
return x;
}
}

调用函数 foo() 返回一个能返回局部变量 x 的函数。闭包经常用在做面向对象风格(OO-style)的编程中,例如getters和stters。

分享到:
评论

相关推荐

    javascript函数式编程

    JavaScript函数式编程是一种编程范式,它强调将计算视为数据处理的过程,并且重视函数作为第一类公民,即函数可以作为变量赋值、作为参数传递、作为返回值返回。这种编程风格在JavaScript中尤其常见,因为它提供了...

    JavaScript第一讲:可以做什么

    "JavaScript第一讲:可以做什么"这个标题暗示我们将探讨JavaScript的基本用途和能力。JavaScript的主要功能包括: 1. **网页动态化**:JavaScript使得网页不再只是静态的HTML,它能够实现交互性,比如响应用户的...

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册四:JS对象

    在"头歌教学实践平台"的Web前端开发基础课程中,第四部分专门讲解了JavaScript中的对象,这是理解JavaScript高级特性和构建复杂应用的基础。在这个学习手册中,我们将深入探讨JS对象的相关知识点。 1. **对象的概念...

    JavaScript ES6函数式编程入门经典_javascript_

    `会将数组的第一个元素赋给`a`,第二个元素赋给`b`。 5. **默认参数**:函数参数可以设置默认值,避免因未传递参数而导致的错误。例如,`function greet(name = 'World') { console.log(`Hello, ${name}!`); }`,...

    javascript函数速查

    在JavaScript中,有多种方式来声明函数: 1. `function` 关键字声明:这是最常见的方式,如 `function myFunction() {}`。这种声明方式遵循词法作用域,函数在声明时就已经存在于当前作用域中。 2. 函数表达式:...

    JavaScript实用小函数(一)

    例如,创建一个简单的函数: ```javascript function sayHello(name) { console.log('Hello, ' + name); } sayHello('World'); // 输出 "Hello, World" ``` 2. **高阶函数**: 高阶函数可以接受一个或多个函数作为...

    javascript 函数式编程

    JavaScript 函数式编程是一种编程范式,它将函数视为第一类公民,允许它们作为其他函数的参数、返回结果,甚至可以存储在变量中。在JavaScript中,函数式编程提供了更高级别的抽象,使得代码更简洁、可读性更强,...

    javascript常用函数 javascript 常用库

    - `shift()`: 删除并返回数组第一个元素。 - `unshift()`: 在数组开头添加一个或多个元素,并返回新长度。 - `slice()`: 返回数组的一部分浅拷贝。 - `splice()`: 添加/删除数组元素,可以改变原数组。 - `...

    JavaScript权威指南(第6版)(中文版).zip

    第一部分为:javascript语言核心;第二部分为:客户端Javascript;第三部分为:javaScript核心参考;第四部分为:客户端JavaScript参考 第一章为:JavaScript概述;第二章为:词法结构;第三章为:类型、值和变量;第四章为:...

    javascript 各种函数用法

    * `shift()`: 删除原数组第一项,并返回删除元素的值。 * `unshift()`: 将参数添加到原数组开头,并返回数组的长度。 * `splice()`: 从 start 位置开始删除 deleteCount 项,并从该位置起插入 val1,val2,... * `...

    JSP动态网站开发 第1章 JSP使用基础第2章 HTML与CSS第3章 JavaScript脚本编程…………

    **第1章:JSP使用基础** JSP的基础部分主要讲解了以下知识点: 1. **JSP概念**:JSP是Java Servlet技术的扩展,它允许开发者在HTML页面中嵌入Java代码,从而实现动态内容的生成。 2. **JSP页面结构**:包括JSP...

    javascript函数

    #### 第一节:函数概述 在JavaScript中,函数占据着核心的地位,它们不仅是执行特定任务的代码块,还具有高度的灵活性和动态性。本节将详细介绍函数的基本概念及其作为对象的独特性质。 ##### 函数定义 一个函数...

    JavaScript的函数式编程基础指南

    首先,我们要理解函数是“第一等公民”的含义。在JavaScript中,函数可以像其他数据类型一样处理,这意味着我们可以创建函数并将其存储在变量中,如`add`和`even`的例子所示。这些函数可以被传递给其他函数,例如在...

    javaScript函数式编程

    第1章 JavaScript函数式编程简介1 1.1 JavaScript案例1 1.2 开始函数式编程4 1.2.1 为什么函数式编程很重要4 1.2.2 以函数为抽象单元7 1.2.3 封装和隐藏9 1.2.4 以函数为行为单位10 1.2.5 数据抽象14 1.2.6 函数式...

    第三章JavaScript函数.docx

    JavaScript函数是编程中不可或缺的部分,它们是一段可重复使用的代码,能够实现特定功能。函数分为用户自定义函数和系统函数。系统函数是JavaScript内置的,可以直接使用,而自定义函数则由程序员根据需求编写。 1....

    javascript常用函数集合

    4. **数组操作**:`Array`对象提供了多种方法,如`push()`(向数组末尾添加元素)、`pop()`(删除并返回最后一个元素)、`shift()`(移除并返回第一个元素)、`unshift()`(向数组开头添加元素)、`splice()`(插入...

    一本关于JavaScript中函数式编程的书

    在JavaScript中,函数是第一类对象,这意味着它们可以赋值给变量、作为参数传递给其他函数,也可以作为其他函数的返回值。这是函数式编程的基础,因为它允许我们用函数来构建更复杂的函数。 二、纯函数 纯函数是只...

    JavaScript基础第06天笔记.md

    前两者属于ECMAScript的基础部分,而浏览器对象则是JavaScript特有的,通常与浏览器API结合使用。 - **自定义对象**:用户自行创建的对象,可以存储自定义的数据和行为。 - **内置对象**:JavaScript自身提供的一...

Global site tag (gtag.js) - Google Analytics