为什么我删除了一个查看微信删除我的好友好友,然后又秒现该好友请求,一直循环。而且请求时间一直定格在周二16:16。

Javascript函数参数 返回值 调用例子-js教程-网页制作-壹聚教程网Javascript函数参数 返回值 调用例子
在js中函数的定义可以使用function函数,然后我们再可以在页面进行函数的调用与传值操作,下面整理了一些关于js函数的例子,希望对各位会有所帮助。
一,函数定义调用
Function(函数)类型实际上是对象。每个函数都是Function类型的实例,而且都与其他引用类型一样具备属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针。
(1)典型的函数声明
function slide(arguments){
(2)以函数表达式的形式定义函数
var slide = function(arguments){
虽然上面两种方式逻辑上是等价的,但是还是有点小区别:
区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定 义
var loveddde = function(num1,num2){ //使用变量初始化
return num1+num2;
alert(loveddde(1,2));
function box(num1, num2){//普通函数声明
retrun num1+num2;
var box = new Function('num1','b', 'return num1+b');
//使用new的构造函数声明,函数是对象,函数名是指针。
函数调用自身,使用arguments.callee,实现递归
window是一个对象,而且是JS里面最大的对象,是最外围的对象
alert(typeof window); window是对象,类型是对象,window表示全局
alert(this); [object window] this目前表示的是window,因为在window的范围下
alert(typeof this)和window一模一样,所以this就是window
function sum(num){
if(num &=1){
return num*arguments.callee(num - 1);
alert(sum(4)); 4!
函数属性和方法
box.length
prototype属性
两个方法,apply()和call(),每个函数都包含这两种非继承而来的方法
function box(num1, num2){
return num1+num2;}
function sum(num1,num2){
return box.apply(this, [num1, num2]);
function sum2(num1, num2){
return box.apply(this,arguments);}
function sum3(num1, num2){
return box.call(this,num1,num2);}
var color = '红色的'; var box = { color=&蓝色的';};
function sayColor(){
alert(this.color);}
sayColor.call(box); //蓝色的
函数参数设置默认值
function simue (){
& var a = arguments[0] ? arguments[0] : 1;
& var b = arguments[1] ? arguments[1] : 2;
& return a+b;
alert( simue() ); //输出3
alert( simue(10) ); //输出12
alert( simue(10,20) ); //输出30
二、函数调用
1:方法调用模式。
请注意this此时指向myobject。
/*方法调用模式*/
&&& var myobject={
&&&&&&&&&&& value:0,
&&&&&&&&&&& inc:function(){
&&&&&&&&&&&&&&&&&&& alert(this.value)
&&&&&&&&&&&&&&& }
&&& myobject.inc()
2:函数调用模式
请注意this此时指向window
/*函数调用模式*/
&&& var add=function(a,b){
&&&&&&& alert(this)//this被绑顶到window
&&&&&&&&&&& return a+b;
&&& var sum=add(3,4);
&&& alert(sum)
3:构造器调用模式
语言精粹一书建议摒弃这中方式。因为有更好的方式。这里先不介绍。下次发表博文的时候贴出来。
会在这里加一个连接。
/*构造器调用模式& 摒弃*/
&&& var quo=function(string){
&&&&&&&&&&& this.status=
&&& quo.prototype.get_status=function(){
&&&&&&&&&&& return this.
&&& var qq=new quo(&aaa&);
&&& alert(qq.get_status());
4:apply调用模式
==我们可以来看一个更有用的apply实例。看最下面的代码。
&&& //注意使用了上面的sum函数
&&& //与myobject
&&& //这中调用方式的优点在于可以指向this指向的对象。
&&& //apply的第一个参数就是this指针要指向的对象
&&& var arr=[10,20];
&&& var sum=add.apply(myobject,arr);
&&& alert(sum);
看这个apply真正应用。bind这是一个绑定时间的函数
var bind=function(object,type,fn){
&&&&&&&&&&& if(object.attachEvent){//
&&&&&&&&&&&&&&&&&&& object.attachEvent(&on&+type,(function(){
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& return function(event){
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& window.event.cancelBubble=//停止时间冒泡
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& object.attachEvent=[fn.apply(object)];//----这里我要讲的是这里
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //在IE里用attachEvent添加一个时间绑定以后。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //但是如果我们用fn.apply(object)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //object.id 可以正常工作了。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& })(object),false);
&&&&&&&&&&&&&&& }else if(object.addEventListener){//其他浏览器
&&&&&&&&&&&&&&&&&&&&&&& object.addEventListener(type,function(event){
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& event.stopPropagation();//停止时间冒泡
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& fn.apply(this)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& });
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&
&&& bind(document.getElementById(&aaa&),&click&,function(){alert(this.id)});
三、匿名函数
函数关键字(function )语句:
function fnMethodName(x) {
&&& alert(x);
&&& 函数字面量(Function Literals):
var fnMethodName = function (x) {
&&& alert(x);
&&& Function()构造函数:var fnMethodName = new Function('x', 'alert(x);')
&&&&&&& 上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常用的方法,后两种都是把一个函数复制给变量fnMethodName,而这个函数是没有名字的,即匿名函数。实际上,相当多的语言都有匿名函数。
四、函数字面量和Function()构造函数的区别
虽然函数字面量是一个匿名函数,但语法允许为其指定任意一个函数名,当写递归函数时可以调用它自己,使用Function()构造函数则不行。
var f = function fact(x) {
&&& if (x && = 1)
&&&&&&& return 1;
&&&&&&& return x * fact(x - 1);
&&& Function()构造函数允许运行时Javascript代码动态的创建和编译。在这个方式上它类似全局函数eval()。
&&& Function()构造函数每次执行时都解析函数主体,并创建一个新的函数对象。所以当在一个循环或者频繁执行的函数中调用Function()构造函数的效率是非常低的。相反,函数字面量却不是每次遇到都重新编译的。
&&& 用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。var y = &global&;
function constructFunction() {
&&& var y = &local&;
&&& return new Function(&return y&); // 无法获取局部变量}alert(constructFunction()()); // 输出 &global&
&&& 和函数关键字定义相比Function()构造器有自己的特点且要难以使用的多,所以这项技术通常很少使用。而函数字面量表达式和函数关键字定义非常接近。考虑前面的区别,虽然有消息说字面量的匿名函数在OS X 10.4.3下的某些webkit的引擎下有bug,但我们平常所说的匿名函数均指采用函数字面量形式的匿名函数。更多详细内容可以阅读《JavaScript : The Definitive Guide,
&&& 5th Edition》的Functions那章。
五、匿名函数的代码模式
&&& 昨天hedger wang在他的blog介绍了几种匿名函数的代码模式:
&&& 错误模式:其无法工作,浏览器会报语法错。
&&& function () {
&&&&&&& alert(1);
&&& 函数字面量:首先声明一个函数对象,然后执行它
。(function () {
&&&&&&& alert(1);
&&& 优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数
。(function () {
&&&&&&& alert(2);
&&&&&&& ());
&&& Void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。
void function () {
&&&&&&& alert(3);
&&& 这三种方式是等同的,hedger wang因为个人原因比较喜欢第3种,而在实际应用中我看到的和使用的都是第1种
上一页: &&&&&下一页:相关内容查看: 454|回复: 5
请问 关于自定义函数调用另一个自定义函数的问题
阅读权限20
在线时间 小时
&&我建立了一个宏 :高度,一个自定义函数HWMN(x0, y0, betab, index),一个自定义函数length(sx1, sy1, sa, bx1, by1, bx2, by2), 其中函数hwmn 调用 函数length。见 红色行H1(Nsec) = length(x0, y0, betab, x1, y1, x2, y2)
但是在运行是时,HWMN函数中的betab 没有赋给 length函数中的 sa。 导致 溢出。这是怎么回事呢?
(代码没有贴完整)
Public Sub 高度()
Dim a As Double
Dim b As Double
Dim c As Double
a = Cells(14, 24)
b = Cells(15, 24)
c = Cells(17, 24)
Cells(19, 24) = HWMN(a, b, c, 1)
Function HWMN(x0, y0, betab, index)
Dim NNode, NBound, NPh, NSlice As Integer
Dim XY(300, 2) As Double
Dim ICPH(300, 3), ICPH1(300, 3), ICPH2(300, 3) As Integer
Dim H1(100), H2, H3, H4, x1, x2, y1, y2 As Double
Dim Mat(100), Nsec As Integer
Dim Yminus, Yplus As Double
Dim k As Double
Dim c As Double
Dim F1 As Double
Dim F2 As Double
Dim M As Double
Dim NY As Double
NNode = Cells(19, 1)
NBound = Cells(19, 2)
NPh = Cells(19, 3)
Dim Rows, RowMS As Integer
& && && &NY = ynode(x0, y0, betab, x1, y1, x2, y2)
& && && &If NY &= y0 Then
& && && && &H1(Nsec) = length(x0, y0, betab, x1, y1, x2, y2)
& && && &End If
If index = 1 Then HWMN = H1(1)
End Function
& && && && && && && &
Function length(sx1, sy1, sa, bx1, by1, bx2, by2)
Dim k1, b1, k2, b2 As Double
Dim ox, oy As Double
k1 = Tan(sa)
b1 = sy1 - k1 * sx1
k2 = (by2 - by1) / (bx2 - bx1)
b2 = by2 - k2 * bx2
ox = (b1 - b2) / (k2 - k1)
oy = k1 * ox + b1
length = Sqr((sx1 - ox) ^ 2 + (sy1 - oy) ^ 2)
End Function
阅读权限100
在线时间 小时
建议上传表格附件来说明问题。
以便于测试。
阅读权限95
在线时间 小时
你的不完整代码中,没有ynode这个函数。
NY = ynode(x0, y0, betab, x1, y1, x2, y2)
……也许问题就在这个函数上发生。
运行导致betab参数归零。
阅读权限95
在线时间 小时
注意到楼主定义变量的方法,可能有严重错误!
Dim k1, b1, k2, b2 As Double
如此写法,仅最后一个蓝色变量b2会被按数据类型Double定义,
其余红色变量k1, b1, k2不会被定义为Double数据类型。而是被定义为缺省预设的Variant变量。
阅读权限20
在线时间 小时
建议上传表格附件来说明问题。
以便于测试。
额 代码需要保密 不过还是谢谢老师了
阅读权限20
在线时间 小时
& & & & & & & &
你的不完整代码中,没有ynode这个函数。
NY = ynode(x0, y0, betab, x1, y1, x2, y2)
按照老师说的已经改正了 谢谢老师啊
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师查看: 6807|回复: 2
请问,如何调用自定义函数的返回值呢?
有附件吗?
我又从网上找了些资料,中午知道怎么返回值了。例如这样function fun(a) as integerfun =a*2 '这里要把结果赋给funend引用时,就可以f=fun(2)了!
如题,我总是不能调用还是返回值,都不知道怎么返回!
|||Excel精英培训
Powered by有问题 @ 爱问
举报原因(必选):
广告或垃圾信息
不雅词句或人身攻击
激进时政或意识形态话题
侵犯他人隐私
其它违法和不良信息}

我要回帖

更多关于 微信删除我的好友 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信