Javascript函数类型的深层分析

Javascript函数类型的深层分析
函数是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引入的函数的简要介绍,希望对您有所帮助。如果你想知道更多,请注意它。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部