JavaScript世界的一等公民 - 函数

http://www.cnblogs.com/ciangcic/p/3526957.html

简介
在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作为返回值,就需要通过函数指针(function pointer)、代理(delegate)等特殊的方式周折一番。
而在JavaScript世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值、传参、返回,这样的函数也称之为第一级函数(First-class Function)。不仅如此,JavaScript中的函数还充当了类的构造函数的作用,同时又是一个Function类的实例(instance)。这样的多重身份让JavaScript的函数变得非常重要。
一、JavaScript函数入门级
JavaScript函数像一般语言一样也是遵循先声明后使用的原则,函数名只能包含字母、数字、下划线或$,且不能以数字开头。函数常见的声明方式有以下两种:1 // 直接声明函数myfunc
2 function myfunc(/* arguments */) {
3 }
4  
5 // 把匿名函数赋值给本地变量myfunc
6 var myfunc = function(/* arguments */) {
7 }

注意,上面两种函数声明方式存在细微的差别:第一种方式在声明时就是一个命名的函数,无论是声明在调用之前、调用之后,甚至是不会执行到的位置(例如return语句之后或是永远不会为真的分支里),都在整个作用域可访问;第二种方式是通过把匿名函数赋值给变量的方式,严格意义上说这不是一个函数的声明(function declaration)而是一个函数表达式(function expression),在赋值之前这个函数不能被任何代码访问到,也就是说这个赋值必须在调用之前完成,否则调用时会出现错误:"TypeError: undefined is not a function"。例如:1 myfunc1(); // 能够正常调用,因为myfunc1采用直接声明的方式
2  
3 function myfunc1() {
4 }
5  
6 myfunc2(); // 出错 TypeError: undefined is not a function
7  
8 var myfunc2 = function() {
9 };

时间: 2024-11-09 00:51:56

JavaScript世界的一等公民 - 函数的相关文章

JavaScript世界的一等公民—— 函数

简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作为返回值,就需要通过函数指针(function pointer).代理(delegate)等特殊的方式周折一番. 而在JavaScript世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值.传参.返回,这样的函数也称之为第一级函数(First-cla

JavaScript的一等公民 — 函数

原文地址: https://software.intel.com/zh-cn/articles/javascript-first-class-citizen-function/ 此文是对博客的笔记和扩充,参考了JavaScript高级程序设计. 1.简单的JavaScript函数 1)常见的函数声明方式有以下两种: function myfunc(args) { ... } var myfunc = function(args) { ... } 两种函数有一些区别:第一种声明方式,可以把函数声明

我是世界第一等:函数

1995年5月,美国程序员Brendan Eich只用了10天,完成了javascript的设计,函数是这门语言的第一等公民.一经推出,网景公司迅速统治了整个浏览器市场. 1997年12月,中国歌手刘德华表示不服,于是写了一首用闽南语唱的歌,叫做<我是世界第一等>.可惜的是,刘德华现在还是连个Hello World都不会写. 心疼华仔…… 不过还是要回到主题,为啥我们常说,函数是javascript世界的第一等呢? 一般的编程语言,第一类对象都具备如下几个特点: 可以通过字面量创建 可被赋于变

Javascript我学之二函数定义

本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘 函数 几个要点: a).函数是javascript中的一等公民 (重要性) b).函数是一个对象 c).函数定义了一个独立的变量作用域 定义方式 a)命名函数:           除非在另一个函数内部定义,否则,命名函数是全局的. 1 // 全局的命名函数 2 function add(x, y) { 3 return x + y; 4 } 5 console.info(add(100, 200)); //300 b)匿名函数: 匿名函

scala 学习笔记(07) 一等公民的函数

在scala中一切皆对象,一切皆函数,函数跟Int,String.Class等其它类型是处于同等的地位,换句话说,使用函数跟使用普通的类型一样,没什么区别,因此: 1.函数可以赋值给变量,可以当参数传递 def helloWorld(msg: String): Unit = { println("Hello," + msg) } def foo = { println("foo") } def main(args: Array[String]) { //函数赋值给变

JavaScript新手的第一堂函数课:定义与参数(文末福利)

关注微信公众号[异步图书]每周送书 本文包括以下内容: 理解函数为何如此重要 函数为何是第一类对象 定义函数的方式 参数赋值之谜 在本文这一部分讨论JavaScript基础时,也许你会感到惊讶,我们的第一个论点是函数(function)而非对象(object).当然,第3部分会用大量笔墨解释对象,但归根结底,你要理解一些基本事实,像普通人一样编写代码和像"忍者"一样编写代码的最大差别在于是否把JavaScript作为函数式语言(functional language)来理解.对这一点的

编程语言中,何谓“一等公民”

http://blog.csdn.net/hikaliv/article/details/4588163 一等公民,First-Class Citizen,此处 Citizen 可换为 object / value / entity 等词.所谓"一等公民"即指在程序中可无限使用的对像(相比其它对像)."一等公民"者可以: 表示为匿名字面值 存储于变量中 存储于数据结构中 作为函数的参数传递 作为函数的返回值 在运行时构造

javascript中的立即执行函数(function(){…})()

javascript中的立即执行函数(function(){…})() 深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包住业务代码,使用jquery时比较常见. ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要

JavaScript 中对变量和函数声明的提前示例

如题所示,看下面的示例(可以使用Chrome浏览器,然后F12/或者右键,审查元素.调出开发者工具,进入控制台console输入)(使用技巧: 控制台输入时Shift+Enter可以中途代码换行) var name = "xiaoming"; (function(){ var name = name || "小张"; console.info(name); })();// 小张 (function(){ name = name || "小张";