JavaScript函数

来源:互联网 发布:苹果手机直播软件 编辑:程序博客网 时间:2024/06/12 23:05

JS中函数可以如下定义:

function sayHello(){    alert("helllo");}

也可以按如下的格式定义:

var sayHello= function(){    alert("hello");};

第一种方式称之为定义式,第二种方式称之为变量式。下面看个有意思的例子:

function sayHello(){    alert("hello");}sayHello();function sayHello(){    alert("hello world!");}sayHello();

这段程序最终输出的结果是:hello world!

这里有两个疑问:

(1)这么定义函数是否是合法的?

答案显然是合法的,JS就可以这么写。

(2)为什么输出的结果是hello world!而不是hello?

原因就是JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。也就是说,在第一次调用sayHello之前,第一个函数语句定义的代码逻辑,已被第二个函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了。

接下来的事情更是颠覆之前建立起来的程序员三观!在JavaScript中,函数也是一种对象,可以给其添加属性、方法,看下面这段代码:

function sayHello(){}sayHello.word = "o my god!";function showWord(){    alert(sayHello.word);}

调用showWord函数会输出:o my god!

任何一个函数都可以为其动态地添加或去除属性,这些属性可以是简单类型,可以是对象,也可以是其他函数。也就是说,函数具有对象的全部特征,你完全可以把函数当对象来用。其实,函数就是对象,只不过比一般的对象多了一个括号“()”操作符,这个操作符用来执行函数的逻辑。即,函数本身还可以被调用,一般对象却不可以被调用,除此之外完全相同。


原创粉丝点击