州网站建设,怎样创建个人网页,北京海淀区属于几环,手机网站横幅制作模板1.理解函数 函数是一段代码块#xff0c;它只定义一次#xff0c;但可以被执行或调用任意次。函数可以有参数#xff0c;实参#xff08;argument#xff09;和形参#xff08;parameter#xff09;#xff0c;实参是在运行时的函数调用时传入的参数#xff0c;形参是…1.理解函数 函数是一段代码块它只定义一次但可以被执行或调用任意次。函数可以有参数实参argument和形参parameter实参是在运行时的函数调用时传入的参数形参是函数中定义的变量。 如果函数挂载在一个对象上作为对象的一个属性就称它为对象的方法。当通过这个对象来调用函数时该对象就是此次调用的上下文也就是该函数的this值。 函数还可以作为构造函数使用用来初始化新建一个对象。 函数可以嵌套在其它函数里构成一个闭包。 2.函数定义的方式 有两个最常用的创建函数对象的方法即使用函数表达式或者使用函数声明。 JavaScript使用关键字function定义函数。函数可以通过声明定义也可以是一个表达式。函数声明 必须始终带有一个标识符-函数名而函数表达式 则可省略这个标识符 1函数声明 function myFunction(a, b) {return a * b;
} 函数声明后不会立即执行会在我们需要的时候调用到。分号是用来分隔可执行JavaScript语句。由于函数声明不是一个可执行语句所以不以分号结束。 2函数表达式 var x function (a, b) {return a * b};
var z x(4, 3); 以上函数实际上是一个 匿名函数 (函数没有名称)。函数存储在变量中不需要函数名称通常通过变量名来调用。上述函数以分号结尾因为它是一个执行语句。 3使用Function() 构造函数不使用 var myFunction new Function(a, b, return a * b);
var x myFunction(4, 3);
可以不使用new命令返回结果完全一样。
不使用构造函数。上面实例还可以写成
var myFunction function (a, b) {return a * b}
var x myFunction(4, 3);
所以在 JavaScript 中很多时候你需要避免使用 new 关键字。 3.函数的调用 函数在定义时并不会执行只有调用该函数时它们才会执行。有四种方式来调用JavaScript函数。 作为函数作为方法作为构造函数通过他们的方法call,apply间接调用(1)作为函数 调用函数时要使用圆括号运算符。圆括号之中可以加入函数的参数。
myFunction(3,5);(2)作为方法 o.mf;
o.m(); 3作为构造函数 function Car(sColor,iDoors,iMpg) {this.color sColor;this.doors iDoors;this.mpg iMpg;this.showColor function() {alert(this.color);};
}var oCar1 new Car(red,4,23); (4)通过方法间接调用 function sayColor(color){this.colorcolor;alert(this.color);
}
function ClassB(sColor, sName) {sayColor.call(this, sColor);//this是指classB的实例对象,将sayColor函数作为classB的实例对象方法调用并传入了sColor参数。// sayColor.apply(this, arguments);this.name sName;this.sayName function () {alert(this.name);};
} 4.其它的一些知识 1自调用函数 函数表达式可以 自调用。如果表达式后面紧跟 () 则会自动调用。不能自调用声明的函数。通过添加括号构成一个分组操作符而分组操作符只能包含表达式以此来说明它是一个函数表达式 (function () {var x Hello!!; // 我将调用自己
})();
以上函数实际上是一个 匿名自我调用的函数 (没有函数名)。 问题为何在函数创建后的立即调用中必须用圆括号来包围它 答案就是表达式句子的限制就是这样的。 (function () {...
})(); 按照标准表达式语句不能以一个大括号{开始是因为他很难与代码块区分同样他也不能以函数关键字开始因为很难与函数声明进行区分。 (2).函数提升Hoisting 提升Hoisting是 JavaScript 默认将当前作用域提升到前面去的的行为。提升Hoisting应用在变量的声明与函数的声明。 因此函数可以在声明之前调用 myFunction(5);//先调用function myFunction(y) {//后声明return y * y;
}注意使用表达式定义函数时无法提升。不要在条件语句中使用函数声明而要使用函数表达式。因为函数声明会提升可能会形成覆盖或无效。由于存在函数名的提升所以在条件语句中声明函数可能是无效的这是非常容易出错的地方。 转载于:https://www.cnblogs.com/YeChing/p/6286543.html