博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript学习第八天笔记(Function)
阅读量:6228 次
发布时间:2019-06-21

本文共 3554 字,大约阅读时间需要 11 分钟。

Function

函数是这样一段JavaScript代码 它只定义一次 但可能被执行或调用多次,Function类型是JavaScript提供的引用类型之一 通过Function类型创建Function对象。在JavaScript中,函数也是以对象的形式存在的,每个函数都是一个Function对象。

定义函数的三种方法

/*1.函数的声明方式*/function fun() {    console .log('this is a function');}fun();/*2.字面量方式*/var fn = function () {    console.log('this is a function');}fn();/*3.创建Function类型的对象(就是一个函数)*/var fun3 = new Function ('a','console.log(a)');fun3(100);/*语法:var 函数名 = new Function('参数','函数体');*/

Object与Function

/*1.Object与Function都是自身类型*/console .log(Object instanceof Object);//trueconsole .log(Function instanceof Function);//true/*2.Object自身是构造函数,所有的函数都是Function类型*/console .log(Object instanceof Function);true/*3.Function是引用类型,用于创建对象,是对象都是Object类型*/console .log(Function instanceof Object);

Function属性

apply方法

Function的apply()方法用于调用一个函数 并且接受指定的this值 以及一个数组作为参数

/*定义一个函数*/function fun (value){    console .log('this is '+value);}/*第一种调用形式,语法结构:函数名称()*/fun('10');/*2.第二种调用方式*//*apply (thisArg,argArry)方法* 参数       thisArg-this       argArry-数组,作为参数(实参的列表)       */fun.apply(null,['tn']);

call方法

Function的call()方法用于调用一个函数 并且接受指定的this值作为参数 以及参数列表

/*定义一个函数*/function fun(value){    console .log('this is '+value);}/*1.函数调用*/fun (100);/*2.apply方式调用*/fun.apply(null,[100]);/*3.call方法调用*/fun.call(null,100);/*语法结构:函数名.call(thisArg,arg1,arg2,...)*/

bind方法

语法:

bind(thisArg,arg1,arg2,arg3....)
*作用:用于创建一个新函数(成为绑定函数)

  • 参数

    *thisArg-this  * arg1,arg2...-表示参数列表  * 返回值-表示返回新的函数
function fun (value){    console .log('this is '+ value);    }fun('20');var f = fun.bind(null,50);f();

arguments对象

由于JS的函数中,不存在重载,所以使用arguments对象实现模拟重载

function add(){    var num= arguments.length;    switch(num){        case 2:            return arguments[0] + arguments[1];            break;        case 3:            return arguments[0] + arguments[1] + arguments[2];            break;        case 4:            return arguments[0] + arguments[1] + arguments[2] + arguments[3];            break;    }}console .log(add(0,1));console .log(add(0,1,2));console .log(add(0, 1,2,3));

函数的递归

调用自身的函数被称之为递归函数 在某种意义上说 递归近似于循环 两者都有重复执行相同的代码 并且两者都需要一个终止条件以避免无限循环或者无限递归

function fn(v){    console.log(v);    if (v >= 10) {        return;    }    // fn(v + 1);    arguments.callee(v + 1);}// fn(0);var f = fn;fn = null;f(0);// console.log(f);

特殊函数

匿名函数

匿名函数的作用:

1.将匿名函数作为参数传递给其他函数 -> 回调函数
2.将匿名函数用于执行一次性任务 -> 自调函数

回调函数

当一个函数作为参数传递给另一个函数时,作为参数的函数被称之为回调函数

var one = function(){    return 1;}function fn(v){    return v();}

或者是

var result = fn(function(){return 1;});console.log(result);

自调函数

所谓自调函数就是在定义函数后自行调用

/*    自调函数 - 定义即调用的函数    * 第一个小括号 - 用于定义函数    * 第二个小括号 - 用于调用函数 */// 全局作用域 - 生命周期:JavaScript文件从执行到执行完毕(function(value){    // 函数作用域 - 生命周期:从函数调用到调用完毕    console.log('this is ' + value);})('function');// 表达式语法(function(value){    // 函数作用域 - 生命周期:从函数调用到调用完毕    console.log('this is ' + value);}('function'));!function(value){    // 函数作用域 - 生命周期:从函数调用到调用完毕    console.log('this is ' + value);}('function');+function(value){    // 函数作用域 - 生命周期:从函数调用到调用完毕    console.log('this is ' + value);}('function');

作为值的函数

将一个函数作为另一个函数的结果进行返回,作为结果返回的函数称之为作为值得函数

var one = function(){    return 100;}function fun(){    var v = 100;   return function(){        return v;    };}

闭包

概述

JavaScript允许函数嵌套,并且内部函数可以访问定义在外部函数中的所有变量和函数,以及外部函数能访问的所有变量和函数。但是,外部函数却不能够访问定义在内部函数中的变量和函数。当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。闭包就是该函数能使用函数外定义的变量。

特点

1.局部变量:在函数中定义有共享意义(如:缓存、计数器等)的局部变量。(注意:定义成全局变量会对外造成污染)

2.内部函数:在函数(f)中声明有内嵌函数,内嵌函数(g)对函数(f)中的局部变量进行访问
3.外部使用:函数(f)向外返回此内嵌函数(g),外部可以通过此内嵌函数持有并访问声明在函数(f)中的局部变量,而此变量在外部是通过其他途径无法访问的

作用

1.提供可共享的局部变量

2.保护共享的局部变量 提供专门的读写变量的函数
3.避免全局污染

转载地址:http://ftnna.baihongyu.com/

你可能感兴趣的文章
TCP编程的迷惑
查看>>
redis专题--slow log详解
查看>>
9-0-查找表-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
thinkphp整合系列之短信验证码、订单通知
查看>>
fsimage 和 edits log
查看>>
遍历json对象---Java
查看>>
从头开始搭建一个Spring boot+RabbitMQ环境
查看>>
bash编程 将一个目录里所有文件存为一个array 并分割为三等分——利用bash array切片...
查看>>
自己动手开发IOC容器
查看>>
hdparm
查看>>
[LeetCode] Best Time to Buy and Sell Stock
查看>>
《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
查看>>
C++11学习
查看>>
【java】java工具类StringUtils,org.apache.commons.lang3.StringUtils
查看>>
WPF太阳、地球、月球运动轨迹模拟
查看>>
Getting Started with Scala
查看>>
curl != casperjs ? - Google Groups
查看>>
Oracle从字符串资源中得到想要的数据分析
查看>>
敏捷开发中的Code Review
查看>>
事务 commit
查看>>