ji中的函数

【函数的声明及调用】

基础知识
 1、函数声明的格式:
function 函数名(参数1,参数2,....){
//函数体
return 结果;
}
>>>函数调用的格式:
直接调用:函数名(参数1的值,参数2的值,...)
事件调用:事件名=函数名();
2、函数声明的几点强调:
① 函数名的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写);
② 参数列表,可以有参数,可以无参数。分别称为有参函数,无参函数;
③ 声明函数时的参数列表,称为“形参列表”(变量的名);
调用函数时的参数列表,称为“实参列表”(变量的值);
函数中,实际有效的参数取决于实参的赋值,未被赋值的形参,将为Undefined;
④ 函数如果需要返回值,可用return返回结果。
调用函数时,使用var 变量名=函数名();的方式,接收返回结果;
如果没有返回值,则接收的结果为Undefined;
⑤ 函数中变量的作用域:
在函数中,使用var声明的变量,默认为函数的局部变量,只在函数内容能用;
不用var声明的变量,默认为全局变量(函数的全局变量必须在函数调用后才能使用);
函数的形参列表,为函数局部变量,只在函数内部能用;
⑥ 函数声明与函数调用没有先后之分,即调用语句可写在声明语句之前;

function func1(){
console.log("调用无参函数");
}

function func2(num1,num2,num3){
var num=num1;
console.log("调用有参函数");
console.log("num为:"+num);
console.log("参数一为:"+num1);
console.log("参数二为:"+num2);
console.log("参数三为:"+num3);
}

var num = func2(1,2,3);

【匿名函数的调用】
1、声明一个匿名函数,直接赋给某个事件;
 window.onload=function(){}
 2、使用函数表达式,声明匿名函数;
 声明函数表达式:var func = function(){}
 调用函数表达式:func();
 >>>使用匿名函数表达式,则调用语句,必须在声明语句之后,
 否则报错(对比常规函数声明与调用区别);
 3、使用自执行函数声明并直接调用匿名函数;
 ① !function(参数一){}(参数一的值 ); //使用任意运算符开头,一般使用!
 ② (function(){}());//使用()将匿名函数及之后的括号包裹
 ③ (function(){})();//使用()只包裹匿名函数表达式
 三种写法的特点:
 ① 结构清晰,开头加!结尾加().不容易乱,推荐使用
 ② 可以表明匿名函数与之后的()为一个整体,推荐使用
 ③ 无法表明函数与之后的()为一个整体,不推荐使用

window.onload=function(){
console.log("使用window.onload调用匿名事件");
}

var func3 = function(){
console.log("使用函数表达式,调用匿名事件");
}

/*

[函数内部的作用对象]
Arguments对象
1、作用:用于保存调用函数时,所赋值的实参列表。
>>>>当我们调用函数,并使用实参赋值时,实际上参数已经保存到Arguments数组中。即使没有形参
,也可以使用Arguments[n]的形式调用参数。
2、 Arguments数组的个数取决于实参列表与形参无关(顺序从0开始);
但当第n个位置的形参,实参,Arguments都存在时形参与Arguments是同步的,
(既在函数中修改其中一个的值,另一个会同步变化);
3、Arguments.callee是Arguments的重要属性,用于返回Arguments所在函数的引用。
Arguments.callee() 可以调用自身函数执行。
在函数内部调用函数自身的写法被称为递归,所以Arguments.callee()是递归调用时常用的方式;

this
指向函数调用语句所在的作用域,即谁调用函数,this指向谁;

console.log(num)
var num = 10;
funcN()
function funcN(){}

[JS中代码执行顺序]
JS中代码运行,会先进行检查、装载,即声明变量、函数等操作;
然后在进入执行阶段,(变量的赋值等属于执行阶段)。

所以,函数的声明属于检查装载阶段,函数的调用属于执行阶段。so,函数调用语句写在哈数声明语句之前,并没有任何关系。

所以,上述代码,执行流入
-------检查装载阶段-------
var num; //声明变量
function func() // 声明函数
-------检查装载阶段-------
console.log(num) ;
num = 10 ;
funcN(); //执行函数的{}中的代码

案例

1、用函数编写一个四则运算器

function calc(fu){
num1=parseFloat(prompt("请输入一个数字"));
num2=parseFloat(prompt("请再输入一个数字"));
switch (fu){
case "+" :
console.log(num1+num2);
break;
case "-" :
console.log(num1-num2);
break;
case "*" :
console.log(num1*num2);
break;
break;
case "/" :
console.log(num1/num2);
break;
default:
console.log("输入有误");
break;
}
}

</script>
</head>
<body>
<button onclick="calc(‘+‘)">+</button>
<button onclick="calc(‘-‘)">-</button>
<button onclick="calc(‘*‘)">*</button>
<button onclick="calc(‘/‘)">/</button>
</body

2、通过递归计算1+2+3+4+...+10

var sum=0;
!function getsum(num){
sum+=num;
num++;

if (num<=10) {
arguments.callee(num);
}

}(1);

console.log(sum);

3、 /*1!+2!+...+10!=?*/

var sum=0;jie =1;
!function getsum(num){
/*var jie =1;
!function(num1){
jie *=num1;
num1++;
if (num1<=num) {
arguments.callee(num1);
}
}(1);*/
jie *=num;
sum+=jie;
num++;
if (num<=10) {
arguments.callee(num);
}
}(1);

console.log(sum);

时间: 2025-01-13 06:16:17

ji中的函数的相关文章

C++中的函数对象(一)

STL中的函数对象,大多数STL类属算法(以及某些容器类)可以以一个函数对象作为参数.引入函数对象的目的是为了使算法的功能富于变化,从而增强算法的通用性. 所谓函数对象,是指一段代码实体,它可以不带参数,也可以带有若干参数,其功能是获得一个值,或者改变操作的状态.在C++编程中,任何普通的函数都满足这个定义,而且,任何一个重载了运算符operator()的类的对象也都满足这一定义,称为函数对象. 普通函数 int multfun(int x, int y) { return x*y; } 或者下

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值

js中一些函数(一)【丫头, 今天去哪儿了呢,好些没有】

Math.Rondom()   ==>  0 到 1 之间的小数 Math.floor(x)  ==>  小于或者等于 x 的整数(即转换成整数后是不能比 x 大的整数) setInterval(hanshu,1000)  ==>  意思为调用下面的 hanshu(), 间隔时间为 1000 ms(毫秒) js中一些函数(一)[丫头, 今天去哪儿了呢,好些没有],码迷,mamicode.com

Mysql中的函数

阅读目录 什么是函数 与存储过程的区别 mysql自带函数 自定义函数 什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中使用,而存储过程不能: 函数一般用于实现较简单的有针对性的功能(如求绝对值.返回当前时间等),存储过程用于实现复杂的功能(如复杂的业务逻辑功能): mysql自带函数 mysql本身已经实现了一些常见的函数,如数学函数.字符串函

javascript中所有函数的参数都是按值传递的

[javascript中所有函数的参数都是按值传递的] 参考:http://www.jb51.net/article/89297.htm

程序代码中退出函数exit()与返回函数return ()的区别

  exit(0):正常运行程序并退出程序:   exit(1):非正常运行导致退出程序:   return():返回函数,若在主函数中,则会退出函数并返回一值.  解析: 1. return返回函数值,是关键字: exit 是一个函数. 2. return是语言级别的,它表示了调用堆栈的返回:而exit是系统调用级别的,它表示了一个进程的结束. 3. return是函数的退出(返回):exit是进程的退出. 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的).ex

JavaScript闭包中闭包函数this的指向

阅读文章前, 请先阅读阮一峰老师的这篇文章http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 前人写过的, 而且写得很好, 就没必要重复下去了. 只加一些阮老师的文章里没有说的.顺便总结一下. 引用一句话: "闭包就是functions that return function"(出处已经忘记啦) 闭包的类型: 循环闭包, 函数闭包 闭包的特点: 外部访问函数内部的值, 函数内部变量不被回收

想精度高,可以考虑用c语言中的函数gettimeofday

大家好: 在 win32 + bcb 时, 有个 GetTickCount() 返回第统启动到现在的 tick, 单位 ms.请问在 Linux + qt5 怎样实现呢? 如果用 QDateTime , 精度只能到秒,而且运行过程中,如果用户改充了系统时间,就会出错了. 用QElapsedTimer. 想精度高,可以考虑用c语言中的函数gettimeofday,微秒级精度 #include <sys/time.h>int gettimeofday(struct timeval*tv, stru

如何使用 JDBC 调用存储在数据库中的函数或存储过程

JDBC调用存储过程步骤:1 通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例.在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name>[(<arg1>,<a