在js中,function类型实际上是对象,每一个函数都是function类型的一个实例。并且与其它引用类型一样具有属性和方法。

声明


1普通方式



Function sum(num1,num2)
{
Return num1+num2;
}

2使用变量初始化函数

Var sum=function(num1,num2)
{
Return num1+num2; }

以上两种方式是经常使用的方式。当然还有其它方式,但相比还是以上更优越。

定义函数。为的就是使用方便。这里仅仅对内部属性进行简单了解

函数内部属性


不论什么函数内部,都有两个特殊的对象,arguments 和 this

arguments为数组对象,包括传递的全部參数。this是它所处对象的作用域。

arguments

比如

一个递归的函数调用
Functionsum(num){
If(num<=1){
Return 1;
}else{
Return num*box(num-1);
}
}

对于求和全然没有问题,倘若函数名改动了,那么递归中的函数就会报错了。所以为了解决问题,我们能够使用函数自身的 arguments.callee 解决。

Function sum(num){
If(num<=1){
Return 1;
}else{
Return num*arguments.callee(num-1);
}
}

This使用

先前觉得自己理解的非常到位,可是我看到下面源代码的时候还是有偏差的。

window对象是js中最大的对象。也是最外围的

全部全局的变量都是window的属性。所以就有

Varcolor='红色的'

Alert(this.color);

Alert(window.color)

两者是同样的结果,这里color为全局变量。所以是window的属性。this代表的就是windows

Window.color='红色的'

Var box={
Color:'蓝色的',
sysColor:function(){
Alert(this.color);
}
} alert(this.color);//此处的this外层是window对象,所以是windowcolor
box.sysColor();//box的color

======================================================================

Window.color='红色的'

Function sayColor(){
Alert(this.color);
//这里是一个动态的this,注意范围的变化
}
sayColor(); Var box={
Color:'蓝色的'
}
Box.sayColor=sayColor;
Box.sayColor();//蓝色

以上对this的基本认识,也是最经常使用的范围变换。this代表包围它对象自身。

Call()和apply()方法

表面上他们是对其它函数的调用,可是不要被他们的表象所迷惑了,真实作用是改动函数的作用域

Var color='红色的';
Var box={
Color:'蓝色的';
} Function sayColor(){
Alert(this.color);
}
saycolor();//红色
sayColor.call(this);//this为window//红色
sayColorcall(box);////蓝色 ;冒充box,作用域就在box对象中

Call,apply的參数为

Apply(对象作用域,參数);

函数的定义,其最后还是为调用,那么调用的类型有哪些呢,

函数调用


1作为函数的返回值

与普通变量一样。

function box(sum,num){
returnsum+num;
} function sum(num){
returnnum+10;
} varresult=box(sum(10),10);
alert(result);

这里我们能够看到输出的结果是30。这里sun返回的是一个详细的数值。

函数当做參数传递

对以上函数进行变型

function box(sum,num){
return sum(num);
} function sum(num){
returnnum+10;
} var result=box(sum,10);
alert(result);

输出为20,还是一个数值。可是这里的參数sum已经不再是一个详细额的数值了,而是一个详细的函数。在box函数中。參数是一个sun函数。

小结:


该内容为funtion的内部的基本属性和方法的认识,js的函数与其它语言的函数是非常相识的,也是源于object类型,期也有this和arguments等參数组。与main函数非常是相识,对照j2ee中的函数以及其它语言的属性也是类型的。如未说明的length,property属性等。

property原型,请參见下篇function介绍

javascript基础篇--function类型(上)的更多相关文章

  1. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  2. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  3. 一步步学习javascript基础篇(8):细说事件

    终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能 ...

  4. web前端篇:JavaScript基础篇(易懂小白上手快)-2

    目录 一.内容回顾: ECMAScript基础语法 1.基本数据类型和引用数据类型 2.条件判断和循环 3.赋值运算符,逻辑运算符 4.字符串的常用方法 5.数组的常用方法 6.对象 7.函数 8.日 ...

  5. javascript 基础篇 随课笔记

    !DOCTYPE HTML><html><head><meta name="content-type" content="text/h ...

  6. 前端知识体系:JavaScript基础-变量和类型

    前端工程师自检清单 1. JavaScript规定了几种语言类型 2. JavaScript对象的底层数据结构是什么 3. Symbol类型在实际开发中的应用.可手动实现一个简单的 Symbo 4. ...

  7. javascript 基础篇

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1. ...

  8. JavaScript中的Function类型浅析

    1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数 ...

  9. 前端开发之JavaScript基础篇三

    主要内容: 1.创建对象的几种方式 2.JavaScript内置对象 3.JavaScript错误--Throw.Try 和 Catch 4.JavaScript 表单验证 一.创建对象的几种方式 1 ...

随机推荐

  1. ul和li里面的list-style

    对ul   list-type  只是设置ul的样式对li    list-type 是对li的综合样式设定  语法是 li-style:list-style-type/list-style-imag ...

  2. Java NIO Buffer说明

    Buffer 有3个重要的参数:位置(position).容量(capactiy).上限(limit) 位置(position): 写:当前缓冲区的位置,将从position的下一个位置写数据. 读: ...

  3. [Luogu 2331] [SCOI2005]最大子矩阵

    [Luogu 2331] [SCOI2005]最大子矩阵 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 ...

  4. MySQL学习笔记之右连接

    MySQL的右连接 #右连接,以右表为基表 select course.stuid,course.stuname,sex,course,city from class1 right join cour ...

  5. 数据库操作通用函数,增强可重复利用性能C#,asp.net.sql2005

    using System;using System.Data;using System.Data.SqlClient; namespace com.hua..li{ /// <summary&g ...

  6. angularJS之ng-bind与ng-bind-template的区别

    ng-bind-template 指令用于告诉 AngularJS 将给定表达式的值替换 HTML 元素的内容. 当你想在 HTML 元素上绑定多个表达式时可以使用 ng-bind-template ...

  7. linux 清空文件的几种方案

    之前要清理文件,都是简单粗暴的rm -rf log文件,最近,发现在某些环境下,是不能删除文件本省的,又必须要清理文件的内容信息,经过亲自实验,目测以下的几种方案是可行的,方案如下: 1.采用vi命令 ...

  8. AMQP及RabbitMQ

    AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现.它主要包括以下组件: 1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程. ...

  9. AI:恐怖谷理论的陷阱

    科学人的小品:恐怖谷:娃娃为什么很可怕? 一.恐怖的来源 恐怖的来源:美学概念.思想对安全的认识,映射到美学领域,转化为美和丑.恐怖,是一种精心掩饰的丑陋. 二.桑尼与C3PO 桑尼更接近于人,为什么 ...

  10. Mysql 之实现多字段模糊查询

    在一个table中有省,市,县,期,栋,单元,室几个字段,然后用户输入一个地址从表中的字段拼接起来进行模糊查询. 解决办法: <MySQL权威指南>中CONCAT的使用方法,在书中的对CO ...