一、函数的定义

1.function语句形式

			//1.function语句式
function test1(){
alert("I am test1");
} test1();

2.函数直接量形式

			//2.函数直接量形式
var test2 = function(){
alert("I am test2");
}
test2();

3.通过Function构造函数形式

Function构造函数可以接收任意数量的参数,但最后一个参数始终都被看成函数体。我们不推荐使用,因为这种语法会导致解析两次代码,第一次是解析常规的JS代码,第二次是解析传入构造函数中的字符串,从而影响性能。

			//3.通过Function构造函数形式
var test3 = new Function("a","b","return a + b");
alert(test3(10,20));

4.三种方式的区别

			/*
* 测试解析时机
*/
test1();// I am test1
function test1(){
alert("I am test1");
} test2();//报错
var test2 = function(){
alert("I am test2");
} alert(test3(10,20));
var test3 = new Function("a","b","return a + b");

     function语句是会被JS解析器优先解析。

			/*
* 测试函数作用域
*/ var k = 1; function test(){
var k = 2; function demo(){
return k;
} var demo = function(){
return k;
} var demo = new Function("return k"); //1.function语句式: 2
//2.function字面量式: 2
//3.Function构造函数式: 1
alert(demo()); } test();

二、arguments对象

JavaScript中每个函数内都能访问一个特别的变量就是arguments。这个变量维护着所有传递到这个函数中的参数列表。arguments变量不是一个数组,但是在语法上有数组相关的属性length。但它不从Array.prototype继承,实际上它是一个对象。因此无法对arguments变量使用标准的数组方法,比如push、pop等。虽然使用for循环遍历是可以的,但是为了更好的使用数组方法,最好把它转换为一个真正的数组。

				alert("arguments[0] = " + arguments[0]); //1
alert("arguments[1] = " + arguments[1]); //2
alert("arguments.length = " + arguments.length); //3
alert("arguments.callee.length = " + arguments.callee.length); //2
alert("arguments.callee = " + arguments.callee);
return a + b;
} add(1,2,3);

从运行结果可以看出以下:

     (1)arguments.length: 实参的个数。

     (2)arguments.callee.length: 形参的个数。

     (3)arguments.callee: 代表当前正在执行的函数,它可以在匿名函数中通过callee递归调用自身。

			function add(a,b){

				alert("arguments.callee.caller: " + arguments.callee.caller);
return a + b;
} function test(a,b){
add(a,b);
} test(1,2);

结果:

结论:

     (1)arguments.callee.caller保存着调用当前函数的函数的引用。

JavaScript基础学习(六)—函数的更多相关文章

  1. JavaScript 基础学习1-day14

    JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...

  2. 48.javascript基础学习

    javascript基础学习:   http://www.w3school.com.cn/jsref/index.asp jS的引入方式: 1.行间事件:为某一个具体的元素标签赋予js内容,oncli ...

  3. JavaScript 基础 学习 (四)

    JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 ​ 元素.on事件类型 = null ​ 因为赋值的关系,所以给事件赋值为 null 的时候 ​ 事件触发的时候,就没有事件处理 ...

  4. JavaScript 基础 学习(三)

    JavaScript 基础 学习(三) 事件三要素 ​ 1.事件源: 绑定在谁身上的事件(和谁约定好) ​ 2.事件类型: 绑定一个什么事件 ​ 3.事件处理函数: 当行为发生的时候,要执行哪一个函数 ...

  5. JavaScript 基础学习(二)js 和 html 的结合方式

    第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入 ...

  6. JavaScript 基础 学习 (二)

    JavaScript 基础 学习 节点属性 ​ 每一个节点都有自己的特点 ​ 这个节点属性就记录着属于自己节点的特点 1. nodeType(以一个数字来表示这个节点类型) ​ 语法:节点.nodeT ...

  7. JavaScript 基础 学习 (一)

    JavaScript 基础 学习 获取页面中的元素的方法 作用:通过各种方式获取页面中的元素 ​ 比如:id,类名,标签名,选择器 的方式来获取元素 ​ 伪数组: ​ 长的和数组差不多,也是按照索引排 ...

  8. JavaScript基础学习-函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...

  9. 几张非常有意义的JavaScript基础学习思维图

    分享几张对于学习JavaScript基础知识非常有意义的图,无论你的JavaScript级别如何,“温故而知新”完全可以从这些图中得到. 推荐理由:归类非常好,非常全面 JavaScript 数组 J ...

随机推荐

  1. 前端总结·基础篇·CSS(二)视觉

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·CSS(四)兼容 目录 一.动画(animation)(IE ...

  2. Sublime Text3安装、注册、插件安装教程

          在前端开发中,有很多软件供我们使用:大名鼎鼎的WebStorm,老而弥坚的Dreamweaver,后起之秀Hbuilder,还有小清新Sublime Text.......等等.作为新手, ...

  3. Xcode的中常用到的快捷键,印象笔记中常用到的快捷键

    Xcode提供了很多快捷键,灵活使用快捷键可以提升开发效率.但对于初学者来说,一次性的去记住并掌握如此多的快捷键显然是不现实的,本文就是来帮助大家了解在iOS开发过程中,使用最频繁的一些快捷键. 1. ...

  4. C# Redis之ServiceStack

    前面几篇博客基本把redis基本操作学习了下,但一些高级应用并没有写进博客,例如持久化.虚拟内存等,像这些主要是通过配置文件来解决的,运维方向可能更侧重一些,对于开发者来说,可能就想知道怎么用C#来和 ...

  5. 安装 MySQL 后,需要调整的 10 个性能配置项

    注意:这篇博文的更新版本在这儿,MySQL 5.7 适用! 原文:Ten MySQL performance tuning settings after installation 在本文中,我们将探讨 ...

  6. 手把手教你webpack、react和node.js环境配置(上篇)

    很多人刚学习react的时候,往往因为繁琐的配置而头疼,这里我将手把手教大家怎么用webpack配置react和redux的环境,这篇教程包括前端react和后台node整个网站的环境配置,对node ...

  7. Maven的声明周期(Lifecycle )和命令(Phase)

    生命周期(Lifecycle ) Maven有三套相互独立的生命周期(Lifecycle ): Clean Lifecycle:做一些清理工作: Default Lifecycle:构建的核心部分.编 ...

  8. 强大的健身软件——Keep

    Keep是一款具有社交属性的健身工具类产品.用户可利用碎片化的时间,随时随地选择适合自己的视频健身课程,进行真人同步训练.完成后还可以"打卡"晒成就.   你可根据器械.部位.难度 ...

  9. 算法模板——sap网络最大流 3(递归+邻接矩阵)

    实现功能:同之前 可以看见的是这次的程序优美了许多,代码简短了一倍还多,可是速度却是和原来的邻接表一个级别的(在Codevs上面草地排水那题的运行时间比较,但是显然数据很大时应该比那个慢些),原理差不 ...

  10. 算法模板——splay区间反转 1

    实现的功能:将序列区间反转,并维护 详见BZOJ3223 var i,j,k,l,m,n,head,a1,a2:longint; s1:ansistring; a,b,c,d,fat,lef,rig: ...