`
silentJesse
  • 浏览: 107987 次
  • 性别: Icon_minigender_1
  • 来自: 福建厦门
社区版块
存档分类
最新评论

javascript函数--第一章(概述及本质)

阅读更多
1.函数的基本语法:
   function functionName(arg0, arg1, ... argN) {
      statements
   }

(1)return:
如果函数不包含return 语句,只执行函数体内语句,并返回undefined
如下代码:
<html> 
<head>
<title>正常方法</title>
<script type="text/javascript"> 
function print(msg) 
{ 
   document.write(msg,"<br/>"); 
}
</script> 
</head> 
<body> 
<script type="text/javascript"> 
   alert(print("没有return"));//输出undefined
</script> 
</body> 
</html> 


(2)另一个重要概念是,与在 Java 中一样,函数在执行过 return 语句后立即停止代码。因此,return 语句后的代码都不会被执行。

2.javascript中函数的重载
<html> 
<head>
<title>函数重载</title>
<script type="text/javascript"> 
function print(msg){//函数1
   document.write(msg,"<br/>"); 
}

function print(){//函数2
  alert("first parameter:" + arguments[0]);
}
</script> 
</head> 
<body> 
<script type="text/javascript"> 
   print("正常方法");
</script> 
</body> 
</html> 

在以上的代码中,或许你会认为
print("正常方法");

因为java,c++中就是这样的,调用的是函数1,但事实上调用的是函数2,为什么呢,因为在javascript中函数名事实是上是对象的引用(这个以下我们会讲到),函数事实上是一个完整的对象,函数名则只是对这个对象的引用.
所以事实上print这个引用在声明函数2时,转而引用了函数2这个对象
所以这种形式并非是对函数进行重载

那么你或许会反对这个说法,你会说
print("正常方法");

有一个实际参数而函数2声明时并没有声明参数,怎么调用呢?

事实上是javascript会将所有的参数都封装到特殊对象arguments中去

所以虽然函数2的声明中没有指定形式参数,但是在函数定义中依照arguments[0],arguments[1],arguments[2]...的顺序来取得函数2调用中的各个实际参数

3.为什么说函数是一个完整的对象,而函数名是这个对象的引用
(对于函数的定义方式有哪些,可以参看
http://silentjesse.iteye.com/blog/970193)
记得下面这个函数吗?

function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

还可以这样定义它:
var sayHi = new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");


而Function是一个类,所以new Function(.....)事实上就是定义了一个对象
虽然由于字符串的关系,这种形式写起来有些困难,但有助于理解函数只不过是一种引用类型,它们的行为与用 Function 类明确创建的函数行为是相同的。

所以说函数事实上是一个对象
为什么说函数名是对这个函数对象的引用,下面这个例子可以看得更清楚
var doAdd = new Function("iNum", "alert(iNum + 20)");
doAdd = new Function("iNum", "alert(iNum + 10)");
doAdd(10);

这个例子可以更明白的说明,函数名doAdd是一个引用了...
观察这段代码,很显然,doAdd 的值被改成了指向不同对象的指针。函数名只是指向函数对象的引用值,行为就像其他对象一样。
既然是引用,那么当然可以为这个对象再声明一个引用了
如下:
var doAdd = new Function("iNum", "alert(iNum + 10)");
var alsodoAdd = doAdd;
doAdd(10);	//输出 "20"
alsodoAdd(10);	//输出 "20"



既然如果名只是指向函数的引用,那么可以把函数作为参数传递给另一个函数吗?回答是肯定的!
如下:
function callAnotherFunc(fnFunction, vArgument) {
  fnFunction(vArgument);
}

var doAdd = new Function("iNum", "alert(iNum + 10)");

callAnotherFunc(doAdd, 10);	//输出 "20"


所有函数都应看作 Function 类的实例。


4.如前所述,函数名属于引用类型,所以它们也有属性和方法
ECMAScript 定义的属性 length 声明了函数期望的参数个数。
如下:
function doAdd(iNum) {
  alert(iNum + 10);
}

function sayHi() {
  alert("Hi");
}

alert(doAdd.length);	//输出 "1"
alert(sayHi.length);	//输出 "0"

Function 对象也有与所有对象共享的 valueOf() 方法和 toString() 方法。这两个方法返回的都是函数的源代码,在调试时尤其有用.

以后我们将function定义出来的变量称之为function实体
注意不是函数,函数之是他的功能之一.
也将之称之为Function对象(因为所有的function实体都是通过Function new出来的),注意Function对象的F是大写的

也只有Function对象才能使用关键字new来生成一个对象(重中之重)



分享到:
评论

相关推荐

    JavaScript函数-高级教程.md

    JavaScript函数-高级教程.md

    JavaScript函数-深入解析与使用指南(很详细)

    #### 一、JavaScript函数的基本原理 JavaScript函数是一种能够封装特定任务的代码块,可以被重复调用以执行这些任务。这些函数可以通过接收参数来处理输入数据,并且通常会返回一个结果。这种机制不仅提高了代码的...

    javascript函数式编程

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

    JavaScript函数式编程.pdf

    以上是对“JavaScript函数式编程”可能包含的知识点的一个大致介绍。考虑到文档中提供的信息有限,这些知识点基于通用的JavaScript函数式编程概念。如果要详细学习和应用这些概念,需要查看具体的教材或者文档来获取...

    JavaScript应用实例-常用函数-小七.js

    JavaScript应用实例-常用函数-小七.js

    常用JavaScript函数 16 - 30(自我总结)

    JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的脚本语言,主要应用于客户端的网页交互。这篇自我总结涵盖了JavaScript函数的16到30个常用知识点,旨在帮助开发者更好地理解和应用这些功能强大的工具。 1...

    第4章 JavaScript中的函数

    第4章 JavaScript中的函数

    javascript 函数教程(由浅入深)

    JavaScript 函数是编程语言的核心部分,它是一种组织代码的方式,使得代码可以被多次重用,降低了程序的复杂性。在JavaScript中,函数是一段可执行的代码块,它能够接收参数,执行特定任务,并可能返回结果。以下是...

    jQuery动画特效---精通JavaScript+jQuery

    第0课 - 内容概述 - [精通JavaScript+jQuery] 第1课 - JavaScript背景知识-[精通JavaScript+jQuery] 第2课 - JavaScript基础 - [精通JavaScript+jQuery] 第3课 - CSS基础 - [精通JavaScript+jQuery] 第4课 - CSS...

    javascript经典特效---函数计算.rar

    在JavaScript的世界里,函数计算是核心概念之一,它涉及到程序设计的方方面面,包括数据处理、事件响应、用户交互以及动画效果等。在这个"javascript经典特效---函数计算"的资源中,我们可以深入探讨JavaScript函数...

    QT和网页中的JavaScript函数进行相互调用的实现

    - 这里的回调函数用于处理JavaScript函数的异步返回结果,如果需要同步获取结果,可以使用`QWebEngineScript`来注册一个全局JavaScript对象,然后通过该对象调用JavaScript函数。 2. **JavaScript调用QT函数**: ...

    JavaScript-ppt及练习试题

    在“JavaScript-ppt及练习试题”中,我们可以期待深入学习JavaScript的基础概念、语法特性以及实际应用。 首先,PPT部分可能涵盖了以下知识点: 1. **JavaScript历史与概述**:讲解JavaScript的起源,其与Java的...

    s2-javascript-上机练习

    【标题】"s2-javascript-上机练习" 涉及的是JavaScript编程语言的实践环节,这通常意味着我们将深入探讨如何在实际操作环境中运用JavaScript技术。JavaScript是一种广泛用于网页和网络应用的脚本语言,它能够实现...

    S2-3使用JavaScript增强交互效果第一章到第三章课件及课后作业答案

    在“S2-3使用JavaScript增强交互效果第一章到第三章”的课程中,我们深入探讨了如何利用JavaScript来提升用户的在线体验。 第一章:JavaScript基础 在这个章节,我们将学习JavaScript的基本语法,包括变量声明、...

    JavaScript教程--从入门到精通(PPT精简版)

    一、JavaScript 概述 JavaScript 是一种基于对象、事件驱动的编程语言,由 Netscape 公司开发,并随 Navigator 浏览器一起发布。JavaScript 能使信息和用户之间不仅仅是一种显示和浏览的关系,而是实现了一种实时的...

    第2章 JSP编程基础知识-JavaScript.ppt

    alert("这是第一个 JavaScript 的例子"); ``` 4. **数据类型** - JavaScript的数据类型包括数值、字符串、布尔、空(null)以及对象。 - 数值类型包括整数和浮点数,支持科学计数法。 - 字符串由单引号或...

    javascript函数大全

    JavaScript作为一种广泛使用的脚本语言,其丰富的函数库是实现复杂逻辑、处理数据和控制网页行为的关键。本文旨在全面介绍JavaScript函数,涵盖数学运算、字符串操作、日期处理、数组管理等多个领域,通过详细解析每...

    JavaScript实用小函数(一)

    这篇博客"JavaScript实用小函数(一)"可能涵盖了JavaScript基础以及一些实用技巧,虽然具体细节未在描述中给出,但我们可以根据常见的话题进行深入探讨。本文将主要围绕JavaScript中的函数、面向对象编程以及多态性来...

    JavaScript教程--从入门到精通

    ES6(ECMAScript 2015)及以后的版本引入了许多新特性,如类(class)、模板字符串、解构赋值、箭头函数、模块导入导出等,极大地丰富了JavaScript的功能,并提升了代码的简洁度。 最后,了解JavaScript的运行环境...

    廖雪峰-JavaScript教程-PDF版

    #### JavaScript的重要性及发展历程 JavaScript作为世界上最流行的脚本语言之一,在Web开发领域占据着举足轻重的地位。无论是个人开发者还是大型企业,都离不开JavaScript的支持。本教程旨在帮助初学者快速掌握...

Global site tag (gtag.js) - Google Analytics