1.函数的声明方式有三种
普通函数的声明方式
function box(num1,num2)
{
return num1+num2;
}
alert(box(1,2));

使用变量初始化函数
var box = function(num1,num2)
{
return num1+num2;
};

alert(box(1,2));

使用NEW的构造函数来声明
var box = new Function('num1','num2','return num1+num2');
alert(box(1,2));

2.作为值的函数
不是作为函数来传递的,而是作为函数的返回值来传递
function box(sum,num)
{
return sum + num;
}

function sum(num)
{
return num + 10;
}

var result = box(sum(10),10); //sum(10)这里传递的是函数的返回值和普通的变量一样
alert(result);

将函数当成参数传递给另一个函数

function box(sum22,num55)
{
return sum22(num55);
}

function sumj(num)
{
return num + 12; //返回22
}

var result = box(sumj,10); //这里sumj是一个函数,当作参数传递到另外一个函数里,而不是函数的返回值。
alert(result);

3.函数内部属性
arguments.callee调用自己本身的函数
function box(num)
{
if(num <= 1)
{
return 1;
}else{
return num * arguments.callee(num-1); //使用arguments.callee,调用自身,实现递归
}
}
alert(box(5));

window是一个对象,而且是JS里面最大的对象,是最外围的对象
//alert(typeof window); window是对象,类型是对象
//alert(this); [object Window] this目前表示的是window,因为在window的范围下
//alert(typeof this); //和window一样,所以this就是window

var color = '红色的'; //这里color就是全局变量,而这个变量又是window的属性
alert(window.color); //alert打印出color,说明color是window下的属性。
alert(this.color); //同上

window.color = '红色的'; //相当于var color = '红色的';。
alert(this.color);

var box = {
color:'蓝色的', //这里的color是box下的属性,也就是局部变量
sayColor:function(){
alert(this.color); //这里this,代表的是box对象。
}
};
box.sayColor();

4.函数属性和方法
function box(name,age)
{
return name + age;
}
alert(box.length);

function box(num1,num2)
{
return num1 + num2;
}
function sum(num1,num2) //apply和call可以冒充另外一个函数
{
return box.apply(this,[num1,num2]); //this表示window作用域,[]表示传递的参数
}
function sum2(num1,num2)
{
return box.apply(this,arguments); //这个可以当数组传递,arguments
}
alert(sum(10,10));

function box(num1,num2)
{
return num1 + num2;
}
function sum(num1,num2)
{
return box.call(this,num1,num2); //call只是传递参数不同,其他和apply一样
}
alert(sum(10,10));

var color = '红色的'; //全局
var box = { //局部
color:'蓝色的'
};
function sayColor(){
alert(this.color);
}
sayColor.call(window); //window下
sayColor.call(this); //this就是window
sayColor.call(box); //作用域在box对象里面

JS—Function类型的更多相关文章

  1. JS Function类型

    每个函数都是Function类型的实例,由于函数是对象,函数名实际上是一个指向函数对象的指针,不会与某个函数绑定. 1.函数的声明: (1)函数声明语法: function sum (num1,num ...

  2. 【笔记】js Function类型 内部方法callee

    运用function实现阶乘 以往的做法是如下的 function factorial(num){ if(num <= 1){ return 1; }else{ return num * fac ...

  3. 【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

    前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法6.操作方法 ...

  4. js判断类型方法

    在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null,Boolean, Number和String:复杂数据类型是Object,Object中 ...

  5. JavaScript高级 Function类型

    ·    Function类型 (属于引用类型) 1.JS中,有的函数均是对象,这个一个非常有特点的地方.它既然是对象,那么它的构造函数是谁呢?就是Function.(例如:function Pers ...

  6. JavaScript中的Function类型浅析

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

  7. JavaScript之Function类型

    1. 创建方式 //1.函数声明 function sum(num1,num2){ return num1+num2; } //2.函数表达式 var sum = function(num1,num2 ...

  8. Javascript高级编程学习笔记(16)—— 引用类型(5) Function类型

    JS中许多有趣的地方都和函数脱不了联系 那么是什么让JS中的函数这么有趣呢? 我们一起来看看吧 Function类型 在JS中函数实际上就是对象,每个函数都是Function类型的实例,和JS的其他引 ...

  9. JS 强制类型转化

    在Js中, 强制类型转化分为两种情况: 一种是引用类型转化基本类型, 如数组转化成数字:一种是两种不同基本类型之间的转化,如字符串转化为数字.你不能将基本类型转化成引用类型,比如,不可能把数字转化为数 ...

随机推荐

  1. Django——include()三种使用方法

    include()的三种使用方法 1.include(module, namespace=None) 2.include(pattern_list)  最常用 3.include((pattern_l ...

  2. java核心-多线程-零碎知识收集

    1.不能使用Integer作为并发锁 原因:synchronized(Integer)时,当值发生改变时,基本上每次锁住的都是不同的对象实例,想要保证线程安全,推荐使用AtomicInteger之类会 ...

  3. 十七、JavaScript之幂运算

    一.代码如下 二.执行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...

  4. 第二阶段scrum-5

    1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 注册登陆界面功能正在实装,前端制作完成 数据库配置中

  5. NumPy 基于数值区间创建数组

    来源:Python Numpy 教程 章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基 ...

  6. mysql 事务使用教程

    一.什么是事务 事务Transaction,是指作为一个基本工作单元执行的一系列SQL语句的操作,要么完全地执行,要么完全地都不执行.   二.事务的特性       原子性         事务是一 ...

  7. Java虚拟机之内存模型

    一.java并发基础 在并发编程中存在两个关键问题①线程之间如何通信 ②线程之间如何同步. 通信 通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. ...

  8. Nginx、MySQL、PHP 编译安装

    RHEL 7.0 编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14运行环境 准备篇: RHEL 7.0系统安装配置图解教程 http://www.jb51.net/os/192 ...

  9. 手把手教你用Python实现“坦克大战”,附详细代码!

    小时候玩的“坦克大战”,你还记得吗? ​ 满满的回忆 ! 今天,我们使用Python以及强大的第三方库来实现一个简单的坦克大战游戏. ​ 整体效果 环境依赖 python3.7 pygame1.9.6 ...

  10. 前台图片Canvas压缩上传小结

    需求来源:之前有个提交审核表单的业务,表单中含有大量附件图片,大约有20多张吧,为了省事,采用的同步上传,一次需要上传很多照片,本来单张图片限制为200KB,这样子总图片大小约为5MB左右,想想也可以 ...