JavaScript
发布时间:2022-04-16 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JavaScript中Function详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
关键字function用来定义函数。
{
statements
}
//函数表达式定义:
var funcname = function ([arg1[,argn]]])
{
statements
};
注意,function语句里的花括号是必需的,即使函数体只包含一条语句。
在JavaScript中,函数是Function类的具体实例。而且都与其它引用类型一样具有属性和方法。
函数名实际上是指向函数对象的指针,函数可以作为参数参与到传参和返回值中。
函数的对象特性
因为函数是Function的实例,而函数名仅仅是该实例的一个引用地址。因此可以作为参数和返回值参与到函数的传参过程中。
all_some_function(some_function,some_argument)
{
return some_function(some_argument
);
}
function add_10(num)
{
return num + 10;
}
console.log(c
all_some_function(add_10,20)
); //30
函数的内部属性
arguments | this
•arguments对象中保存着传递给函数的参数
•argument
s.length返回传入参数的个数
•Note: length属性表示函数定义时候默认接收的参数数量。argument
s.length表示函数实际执行时接收的参数数量。
test_arguments()
{
if (argument
s.length == 2)
{
console.log(argument
s.length
);
console.log(arguments
);
} else
{
console.log(argument
s.length
);
console.log(arguments
);
argument
s.callee(4,5
);
};
}(1,2,3)
/
**
3
{ '0': 1,'1': 2,'2': 3 }
2
{ '0': 4,'1': 5 }
**/
•arguments.callee()主要用在递归函数中调用函数自身的情境中。js和别的语言不同在于函数名只是一个指针,可以随时变化,函数中利用函数名来调用自身属于高耦合,可能会出现问题,而Arguments.callee()调用自身就会规避掉这个问题
{
if (num <= 1)
{
return 1;
} else
{
return num * factorial(num - 1
);
};
}
function callee_f(num)
{
if (num <= 1)
{
return 1;
} else
{
return num * argument
s.callee(num - 1
);
};
}
factorial(10
); //运行正常
f = factorial;
factorial = null;
f(10
); //error
callee_f(10
); //运行正常
f = callee_f;
callee_f = null;
f(10
); //运行正常
•this主要用来帮助函数引用函数所处作用域中的对象。
{
console.log(thi
s.color
);
}
syaColor(
); //red
var o = new Ob
ject(
);
o.color = 'blue';
o.sayColor = sayColor;
o.sayColor(
); //blue
call()和apply()
call()和apply()是每个函数都包含的自有方法。之前已经提到了函数是定义的对象,那么调用函数时候,函数中的this是对当前与下变量的调用。而如果想改变函数执行所在域空间,则可以使用call()和apply()来实现。
{Color: 'blue'};
function sayColor()
{
console.log(thi
s.color
);
}
sayColor(
); //red
sayColor.call(this
); //red
sayColor.call(o
); //blue
app()和call()的作用是相同的,区别主要在于传入参数的不同。
call(this,para1,prar2,prar3) 第一个参数是函数要执行的作用域,后面的参数是函数的输入参数,有多少个依次写多少个。
apply(this,[para1,para2,prara3])第一个参数也是函数要执行的作用域,后面是一个Array的数组对象。
使用call()/apply()来扩充作用域最大的好处是对象和方法的解耦。
内置对象
Global对象可以理解成最外层的对象,所有的对象,以及不属于其它对象的属性和方法都被包含在Global对象中。
* isNaN(X) 用来检查参数x是否为数字。如果为数字返回false,否则返回true
* isFinite(X) 用来检查参数x是否为无穷大/小,如果是无穷大/小,则返回true
* parseInt(X) 用来解析字符串并返回整数
* parseFloat(X) 用来解析字符串并返回浮点数
* encodeURI()和encodeURIComponent()会对字符串进行特殊的UTF-8编码,规避一些特殊字符来让浏览器能够读懂。他俩的区别主要在于encodeURI()不会对本身属于URI的特殊字符进行编码,而encodeURIComponent()会对其发现的所有非标准字符进行编码。
http://www.wrox.com/illegal">
http://www.wrox.com/illegal value.htm#start";
//
http://www.wrox.com/illegal%20value.htm#start
console.log(encodeURI(uri))
//
http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
console.log(encodeURIComponent(uri))
•对应的解码函数为decodeURI()和decodeURIComponent()
•eval(script) 用来将script的内容在解释器中执行并返回对应的结果。非常强大!
Note:在浏览器中,windows对象封装了Global对象,并承担了很多额外的任务和功能。
@H_594_0
@math对象为另一个内置对象。@R_
618_9478@Script提供了数学计算功能。
以上就是本文的全部内容了,希望小伙伴们能够喜欢,能够对大家有所帮助。
大佬总结
以上是大佬教程为你收集整理的JavaScript中Function详解全部内容,希望文章能够帮你解决JavaScript中Function详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。