JS复习:第七章
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS复习:第七章相关的知识,希望对你有一定的参考价值。
第七章 函数表达式
一、定义函数的方式有两种:函数声明和函数表达式。
1.函数声明:
function functionName(arg0 , arg1 , arg2){ //函数体... }
函数声明的一个重要特征就是函数声明提升,在读取代码之前会先读取函数声明。意味着可以将函数声明放在调用代码之后。
2.函数表达式:
var functionName = function(arg0 , arg1 , arg2){
//函数体...
}
创建一个函数并将它赋值给一个变量,这种情况下创建的函数叫做匿名函数。因为function后面没有标识符。函数表达式与其他表达式一样使用前必须先赋值。
二、匿名函数的作用:
1.把函数当成值来用时,可以使用匿名函数。
2.
三、闭包
闭包是指有权访问另一个函数作用域中的变量的函数。
如下代码:
function createFunction(){
var result = new Array();
for(var i = 0 ; i < 10 ; i++){
result[i] = function(){
return i;
};
}
return result;
}
会有一个明显的问题是返回的所有i值都为10,即数组的最后一个i。
解决方法是:
function createFunction(){
var result = new Array();
for(var i = 0 ; i < 10 ; i++){
result[i] = function(num){
return function(){
return num;
};
}(i);
}
return result;
}
四、私有变量
私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。在函数内部可以访问这个变量,但在函数外部则不能访问它们。如果在这个函数内部创建一个闭包,那么闭包通过自己的作用域也可以访问这些变量。有两种在对象上创建特权方法的方式。第一种是在构造函数中定义特权方法,基本模式如下:
function MyObject(){ //私有变量和私有函数 var privateVariable = 10; function privateFunction(){ return false; } //特权方法 this.publicMethod = function(){ privateVariable++; return privateFunction(); }; }function MyObject(){ //私有变量和私有函数 var privateVariable = 10; function privateFunction(){ return false; } //特权方法 this.publicMethod = function(){ privateVariable++; return privateFunction(); }; }
第二种:在私有作用域中定义私有变量或函数,同样也可以创建特权方法,其基本模式如下:
(function(){ //私有变量和私有函数 var privateVariable = 10 ; function privateFunction(){ return false; } //构造函数 MyObject = function(){ }; //公有、特权方法 MyObject.prototype.publicMethod = function(){ privateVariable++; return privateFunction(); }; })();
以上是关于JS复习:第七章的主要内容,如果未能解决你的问题,请参考以下文章
《信息与编码》考试复习笔记7----第七章信息率失真函数相关例题