函数是Javascript中最常用的概念。Javascript中的函数是最简单的开始方式,但它也是Javascript理解和掌握的最困难的概念。
1。函数
类型是js中的引用类型之一,每个函数实际上是函数类型的实例对象,有自己的
属性和
方法,因为函数对象,函数名实际上是指向函数对象的指针。
2。常用函数定义方法
1。函数声明:
函数和(a,b){
返回A+;
}
2。表达:
函数(){()
返回A+;
};注意分号
两种方法的
区别:
解释器将是第一个读取/函数声明,并使它在
执行前可以访问,并使用表达式必须等到解析器实现到其代码行,才会真正被解释(变量声明提前,并且值保持在适当
位置)。
警报(和(10, 10));
函数和(a,b){
返回A+;
}
上述代码将增加/正常执行,因为代码在解析器通过函数语句执行之前进行改进,并且将读取添加到执行环境中的函数声明,代码树中的顶部。
警报(typeof和);
警报(和(10, 10));
函数(a,b){
返回A+;
}
= / /
错误,
原因在于
功能的初始化语句,而不是一个函数声明,不会提前,将VaR和提前,用typeof
运算符和是未定义的,所以是错误的
3、函数名只保留指向函数对象的指针,因此函数名与包含对象指针的其他变量是不一样的,也就是说,函数对象可以有多个名称。
函数和(a,b){
返回A+;
}
console.log(和(2, 3)); / / 5
无功anothersum =和; / / anothersum变量指向同一个对象的功能
console.log(anothersum(4, 5)); / / 9
总和= null;和变量不再
保存函数对象的指针。
console.log(anothersum(1, 3)); / / anothersum变量仍然可以被称为
4。为什么JS没有重载的概念。
函数添加(a){
返回一个+ 3;
}
函数添加(a){
返回一个+ 5;
}
var结果=添加(3);8
同一名称的两个函数,结果只能是覆盖前一个函数,因此不能重载。
5的内部性质。函数:在函数中有两个特殊的对象、
参数和
1。争论:
参数是一个类数组对象,它包含传入函数的所有参数。这个对象的属性称为被调用函数和属性值是一个指针,指向函数本身拥有的参数对象。
函数(){
创建一个arguments.callee;
返回a.tostring();
}
(富);
*
返回结果:
函数和({){
创建一个arguments.callee;
返回a.tostring();
}
也就是说,在一个函数中,arguments.callee指本身的功能。这个功能有点用时调用递归调用,并且有许多缺陷,这在ES5的严格
模式删除 * /
2。简单地说,这指的是函数执行的环境对象,哪个对象被执行,这是指哪个对象。
:
三.ES5的规范功能,其他物业来电,指的是函数调用当前函数
函数内部(){
Console.log(内。来电);
}
函数外部(){
内();
}
外();
函数外部(){
内();
}
4。长度属性:函数希望接受的参数数。
函数添加(a,b,c){
返回B+;
}
add.length; / / 3
5、著名的原型属性只是一个对象,一个通过调用构造函数创建的对象,它包含了一个特定类型的所有实例都可以共享的属性和方法。
:
6种方法。函数:调用()和应用(),函数是在特定的范围内调用函数,事实上,在函数中
设置这个值。
1。调用():与应用()方法类似,所接收参数之间的差异是不同的,并且参数必须一一列出。
2。应用():接收两个参数,一个是函数
操作的范围,另一个是参数数组,它可以是数组,也可以是数组对象的参数。
函数和(a,b){
返回A+;
}
功能callsum(A,B){
返回sum.apply(这个参数);
第二个参数是一类对象参数。
功能callsum1(A,B){
返回sum.apply(,{一},B);
第二个参数是数组。
console.log(callsum(2, 3)); / / 5
console.log(callsum1(3, 5)); / / 8
三.传递参数和调用函数不是调用()和应用(),而两个真正强大的函数是
扩展函数的
作用域。
VaR的颜色';
var obj = { {
颜色:蓝色的
}
函数(){
console.log(的颜色);
}
foo(); / /'
foo.call(本); / /'
foo.call(obj); / /蓝
/ /最后调用foo()函数的执行环境发生了变化,这一点对
目标对象,所以is'blue
使用调用()和应用()扩展操作范围的最大好处是将对象与方法解耦。
4。定义了一种新的方法:ES5绑定(),它返回一个函数,这个值会传递到绑定的值()函数。
变量x=9;
var模块{ {
X:81,
GetX:函数(){退货。X;}
};
module.getx(81); / /
无功retrievex = module.getx;
(retrievex); / / 9,因为在这种
情况下,这指的是全局变量
无功boundgetx = retrievex.bind(模块); / / retrievex(这)函数总是绑定模块,然后调用这个函数总是在模块对象
运行 BoundGetX(81); / /
以上是对javascript引入的函数的简要
介绍,希望对您有所帮助。如果你想知道更多,请注意它。