js学习总结----函数

一、函数基本知识

1、function:函数->具备某个功能的一个方法。方法本身是没有什么意义的,只有执行这个方法实现了对应的功能才有自己的价值。

2、函数由两部分组成:创建一个函数、执行这个函数

   function 方法名(){

         //函数体:存放的某个功能实现的JS代码

   }

   方法名();

  创建一个函数可以执行多次,一般情况下,每次执行函数和上一次执行没有任何的关系

function sum(){
            var total = null;
            total = 1 + 1;
            console.log(total)
        }     sum// 后面不加小括号,代表的就是当前函数本身
        sum(); //sum后面加小括号,代表的是执行当前函数  函数执行的目的:把函数之前存储的那些字符串 变成js代码,          然后在让js代码从上到下的执行。

  创建一个函数的过程:

   1)、首先开辟一个新的内存空间,浏览器为其分配一个16进制的地址,我们假设地址为:xxxfff000

   2)、把函数体中的JS代码当做"字符串" 存储到内存空间中。

   3)、再把这个地址赋值给当前的函数名 sum->xxxfff000

  函数执行的过程

  1)、函数执行的时候,首先会提供一个供函数体中代码执行的环境->私有作用域

  2)、把函数体中的代码字符串变为代码从上到下执行

  注意:函数在执行的时候,首先会形成一个新的私有作用域,供函数体中的代码从上到下执行,形成的那个私有作用域,把我们函数体中的代码都包起来了,保护里面的私有变量,不受外界的干扰,我们把函数执行的时候形成的这种保护机制叫做"闭包"

二、形参

  扩展:我们想把sum这个方法升级,随便给我两个数都能求和 ->形参 

function sum(num1,num2){//num1和num2 就是我们设定的形参“变量” 是当前函数的两个入口
            var total = null;
            total = num1 + num2;
            console.log(total)
        }
        sum(100,200);//执行的时候  只需要把对应形参的值传递给函数即可
        sum(10) // num1 = 10  num2 = undefined 没有传递的形参默认是undefined

三、return

  在函数里面return  就是当前函数提供给我们的出口,因为不提供出口的话,闭包的机制导致了在函数体的外面

无法获取里面的值,如果想在外面使用里面的值,值需要通过return 把total的值返回到外面即可--》“返回值机制”

  外面想用哪个值,我们就把哪个值返回 ->return total ;并不是把变量返回给外面,而是把变量存储的值返回给外面

  var total = sum(100,200) // 首先把函数sum执行,然后把sum执行后的返回值(看sum执行的返回结果,只需要看sum中是否存在return,有return,return后面返回的值是什么,那么函数的返回值就是啥;如果sum中没有return 那么默认的返回值是undefined)赋值给外面的变量total

  在函数体中return 下面的代码都不会执行了 ->终止函数体中代码执行的作用

四、arguments

  "任意数求和":随便给我几个数(具体几个不知道,就没有办法定义形参的个数),我都能求出和 

  arguments:函数天生自带的(不管写没写形参,也不管是否传递值,arguments始终都是存在的),用来接收函数传递进来的参数值的集合

  typeof arguments  // object 它是一个对象数据类型的值,它是以数字作为索引,索引从零开始逐级递增,索引0存储的是第一个参数,索引1存储的是第二个参数值,索引n存储的是第n+1个参数值。。。有一个叫做length的属性代表一共传递了多少个参数; 它不是数组,我们把它称之为类数组

  callee:function sum ()... 它还有一个自己特殊的属性callee,代表当前函数本身 

function sum(){
            var total = null;
            for(var i = 0;i<arguments.length;i++){          var cur = Number(arguments[i])          //对于非有效数字我们不在进行累加,防止最后结果是NaN          if(isNaN(cur)){               continue;          }
                total+=cur;
            }
            return total;
        }

五、匿名函数

  实名函数:起了名字的函数就是实名函数

  匿名函数:没有名字的函数 就是匿名函数

  在js中常用到的匿名函数有两种方式:

    1)、自执行函数:定义函数和函数执行一起完成了

      ;(function(num){ 前面加;的作用是为了防止上面代码结束不加;

      }(100))

    2)、函数表达式:把函数定义的部分当做一个值赋值给一个变量或者元素的某一个行为

      var f = function(){}

  

时间: 2024-08-29 03:21:16

js学习总结----函数的相关文章

js学习之函数的参数传递

我们都知道在 ECMAScript 中,数据类型分为原始类型(又称值类型/基本类型)和引用类型(又称对象类型):这里我将按照这两种类型分别对函数进行传参,看一下到底发生了什么. 参数的理解 首先,我们要对函数的参数有一个了解: 形参就是函数内部定义的局部变量: 实参向形参传递值的时候,就是一个赋值操作,把实参的值直接复制一份给形参. 原始类型参数传递 示例1 var a = 1; function f(b) { a = 3; } f(a); console.info(a); // 3 示例1中的

js学习总结----函数的三种角色

注意:Function.prototype是函数数据类型的值,但是相关操作和之前的一模一样->Empty/anonymous 函数本身也会有一些自己的属性:   length :形参的个数   name:"Fn" 函数名   prototype 类的原型,在原型上定义的方法都是当前Fn这个类实例的公有方法   __proto__ 把函数当做一个普通的对象,指向Function这个类的原型 函数在整个JS中是最复杂的也是最重要的知识: 1.一个函数存在了多面性: "普通函

JS学习之函数内部属性和方法

知识点:arguments和this对象.caller属性.apply()和call()方法     arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象 属性:callee 指针,指向拥有这个arguments对象的函数  作用:解耦 例子:迭代 function factorial(num) { if(num<=1){ return 1; }else{ return ( num*arguments.callee(num-1)); } } console.log(fact

JS学习之函数的作用域

作用域 变量或者函数可访问的一个范围,以函数来划分,一个函数块就是一个作用域.一 全局作用域 全局:整个文档 变量或者函数在函数外面声明,那它们就是全局变量或者全局函数,在这个页面的任何地方都可以访问的到. 声明全局作用域的方法: 1.把变量或者函数放在函数外面声明 2.变量不用var声明,直接给变量赋值:不管在函数外还是函数内声明 全局变量在任何地方都可以访问的到是因为全局变量是window的一个属性,window是一个全局对象,本身在页面中的任何位置都可以访问 1 var a=10; 2 c

node.js学习(2)函数

1 简答函数 2 匿名函数 3 回调函数 原文地址:https://www.cnblogs.com/xiao-xue-di/p/11332507.html

好程序员web前端学习路线分享web测试之Js中的函数

好程序员web前端学习路线分享web测试之Js中的函数,在JS中,一般使用函数其实就是为了封装某些操作,或者把编写的程序进行模块化的操作. 一.函数的声明方式 1.普通的函数声明 function box(num1, num2) { return num1+ num2; } 2.使用变量初始化函数 var box= function(num1, num2) { return num1 + num2; }; 3.使用Function构造函数 var box= new Function('num1'

【前端小小白的学习之路】----&gt;用JS编写一个函数,返回数组中重复出现过的元素

用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: var arr = [1, 2, 3, 1, 2, 3, 4, 5]; var getRepeat = function (arr) { var obj = {}; for (var i = 0, len = arr.length; i < len; i++) { if (obj[arr[i]] == undefined) { obj[arr[i]] = 1; } else { obj[arr[i]]++; } } for (var

Js学习第十天----函数

函数 什么是函数?函数是由事件驱动的或者当他被调用时执行的可重复使用代码块.估计没明白,个人认为函数就是能完成一个功能的代码块. 看个案例: <!DOCTYPE html> <html> <head> <script> function myFunction() { alert("Hello World!"); } </script> </head> <body> <button onclick=

Js学习小结(二)函数

(一)声明函数 直接量(字面量)声明 function f1(){ ... } 表达示声明 var f2 = function(){ ... } 内置构造函数声明(使用此方式情况很少,一般不用,所以就不过多赘述) var f3 = new function(); (二)调用函数 直接量声明函数调用 f1(); function f1(){ console.log(111); } f1(); 结果: 111 111 声明前后都可调用 表达示声明函数调用 f2(); var f2 = functio