博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript函数
阅读量:4325 次
发布时间:2019-06-06

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

Function对象

js中一切都是对象,函数也是对象,函数名是引用函数定义对的变量。

一.函数的定义

1 //函数定义的三种方法 2     //声明方式 3     function sum(x,y){ 4         return x+y; 5     } 6     sum(1,2);//调用sum函数,求和 7     //函数名和函数定义都被提前,在调用前后位置定义都行 8      9     //函数直接量10     var sum = function(x,y){11         return x+y;12     }13     sum(1,2);//调用sum函数,求和14     //仅函数名声明变量会提前,函数定义留在本地,必须定义在调用前15     16     //使用new创建函数类型对象17     var sum = new Function("x","y","return x+y");

二.匿名函数

  定义时,不指定函数名的函数  

/* 匿名函数自调:    定义完,立即执行,执行完立即释放    只有确定函数只执行一次时使用*/(function(x,y){alert(x*y)})(2,3);var tens = (function(x) {
return x*x}(10));//自调:定义在哪,就在哪执行,不提前/* 匿名函数回调 将函数作为队象传递给另一个函数,由另一个函数自主决定在需要时调用*/var arr=[1,12,123,3,2,23];arr.sort(function(a,b){
return a-b;});//比较器函数回调console.log(arr);

三.arguments对象

  arumengts: 在函数调用时, 会自动在该函数内部生成一个名为 arguments的隐藏对象。

  标识符arguments是指向函数实参的引用,实参对象是一个类数组对象。每个实参对象都包含以数字为索引的一组元素以及length属性,但它毕竟不是真正的数组。

  js语法不支持重载,但可用arguments对象模拟重载效果。

  arguments[i]  获得传入的下标为i的的参数值

  arguments.length  获得传入参数的个数

1 function calc(   ){ 2     //如果用户传入一个参数,求平方 3     if(arguments.length==1){ 4         alert(arguments[0]*arguments[0]); 5     }else if(arguments.length==2){ 6     //如果用户传入两个参数,就求和 7         alert(arguments[0]+arguments[1]); 8     } 9 }10 calc(4); //1611 calc(4,5); //912 /*无论用户传入几个数字,都可以求和*/13 function add(){14     //遍历arguments中每个元素,并累加15     for(var i=0,sum=0;i

  即使定义了参数变量,arguments对象同样会收到所有参数值

  arguments 的 callee 和 caller 属性

    在ECMAScript 5 严格模式中,这两个属性的读写都会产生一个类型错误。

    callee: 当函数被调用时,它的arguments.callee对象就会指向自身,也就是一个对自己的引用。

1 (function aCallee() {  2   console.log(arguments.callee);  3 })();//FF 中返回 aCallee()

 

     1. callee 属性在某些时候会非常有用,比如匿名函数中通过 callee 来递归地调用自身

1 var factorial = function(x){2   if(x <= 1) return 1;3   return x * arguments.callee(x-1);4 }5 factorial(4);// 24

 

    2. caller: 在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象。如果该函数当前未被调用,或并非被其他函数调用,则caller为null。

1 function testCaller() {  2   console.log(testCaller.caller);     3 }  4 function aCaller() {  5     testCaller();  6 }   7 aCaller();  // FF 下输出为 aCaller()

 

 四. 函数的属性

  1.length 属性

    在函数体内, arguments.length 表示传入函数的实参的个数。而函数本身的 length 属性(只读),代表函数的形参个数,即在函数调用时期望传入函数的实参个数。  

1 (function check(args){2   console.log("实参真是个数" + arguments.length + "; 期望实参个数:" + arguments.callee.length);3 })(2,3,4,5); // 实参真是个数4; 期望实参个数:1

 

   2. prototype 属性 指向原型对象的引用

 

转载于:https://www.cnblogs.com/Medeor/p/4889928.html

你可能感兴趣的文章
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>
C程序之修改Windows的控制台颜色(转载)
查看>>
自定义滚动条
查看>>
[QT][待解决问题]对话框ui载入卡顿问题
查看>>
jquery中单选选中及清除选中状态
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>
为啥程序会有bug?
查看>>
跨域技术
查看>>
JS里的居民们7-对象和数组转换
查看>>
计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值.
查看>>
python初体验
查看>>
配置vue,vue脚手架的应用(老版本)
查看>>
Start with PJSIP on windows
查看>>
【图像处理】ISP 图像传感器camera原理
查看>>
linux下防火墙iptables原理及使用
查看>>
Android 使用手机向手表安装任意.apk
查看>>