长春网站建设

ECMAScript中变量引用的覆盖

时间:2018-10-22 10:56 来源:www.0431aa.com 作者:佰亿金科 浏览次数:


试想一下,函数名作为指导,也有助于理解为什么ECMAScript的无功能的概念超载。下面是前面使用的示例:

功能addSom?Numb?r(NUM){

返回NUM + 100;

}

功能addSomeNumber(NUM){

返回NUM + 200;

结果= aaddSomeNumber(100); // 30O

显然,在这个例子中,我们声明了两个名称相同的功能,其结果是后盖的在僻静的几个前的功能。上面的代码实际上是从下面的代码没有不同;

VAR addSomeNumber =函数(NUM){

返回门+ 100;

);

addSomeNunber =函数(NUM){

返回NUM + 200;

);

VAR结果= addSomeNumber(100); // 300

长春网站建设公司技术人员提示:观察改写后的代码,很容易在看看到底是怎么回事儿 - 创建第二个功能时,变量引用实际上覆盖第一功能addSomeNumber。

希望广大从事建筑网站所有者或网站建设公司或企业的帮助球队,像这样不明白的,可以联系网络长春网络技术。我们与广大站长和网站建设公司的技术人员分享我们的高科技和经验。

 

到目前为止,我们还没有函数声明和函数表达式区分。事实上,将数据加载到的函数声明和函数表达式执行环境分析器时不一视同仁。解析器函数的声明将是一读,并执行任何代码之前将其提供(访问); 作为一个函数表达式,你必须等到解析器中的代码行执行它,真的会被解释。请看下面的例子:

警报(总和(10,10));

函数sum(numl,NUM2){

返回numl + NUM2;

}

上面的代码是全功能的。因为代码的执行开始之前,解析器读取功能的声明,并把它添加到执行环境。如果,如在下面的例子中所示,上述的函数声明政府是可变的初始化模式(即,使用函数表达式),它会导致在执行期间的错误:

警报(总和(10,10));

VAR和= {功能NUM1,NUM2){

返回numl + NUM2;

};

为什么上面的代码将在运行期间产生错误的原因,因为在一份声明中初始化函数,而不是一个函数声明。换言之,之前其中函数,变量sum还没有保存到函数的引用语句的执行; 此外,由于第一行代码会导致“意外 识别符“(意外标识符)误差,实际上,不到下一行。

此外,当你可以通过差异变量之间的函数声明和函数表达式语法外部访问这个功能实际上相当于。

长春网站建设公司技术员提示:您还可以使用函数声明和函数表达式在同一时间,例如:VAR总和=功能 总和(){}。然而,这句法会导致在Safari中的错误。

希望广大从事建筑网站所有者或网站建设公司或企业的帮助球队,像这样不明白的,可以联系网络长春网络技术。我们与广大站长和网站建设公司的技术人员分享我们的高科技和经验。

 

因为在ECMAScript中本身的函数名是可变的,该功能也可以被用作一个值。换句话说,不仅可以通过像相同的参数传递一个函数到另一个功能,以及功能可以返回作为另一个函数的结果。看看下面的函数:

功能callSomeFunction(someFunction,someArgument){

返回someFunction(someArgument);

}

长春网站建设公司技术人员注意:此函数接受两个参数。第一个参数应该是第二参数的函数应该是被传递给函数的值。然后它可以如以下示例的功能进行传递:

功能ADD10(NUM){

返回NUM + 10;

}

VAR = RESULT1 callSomeFunction(addl0,10);

警报(resultl); // 20

函数getGreeting(名称){

返回“你好,” +名称;

}

VAR RESULT2 = callSomeFunction(getGreeting “尼古拉斯”);

警报(RESULT2); //“你好,尼古拉斯”

这里SomeFunction()函数是通用的,我。e。,第一个参数是否在什么功能,返回的第一个结果参数传递。长春网络技术人员提醒您,记住它,访问函数指针而不执行函数时,函数名后,那么它必须被移除括号。由此到上述示例callSomeFunction()是ADD10 和getGreeting,而不是执行他们的结果后,。

当然,另一个功能可以从函数返回,这是非常有用的技术。例如,假设你有对象的数组,我们要根据对象属性的数组排序。该阵列被传递给比较功能sort()方法来接收两个参数,我。e。,价值比较。然而,我们需要一种方法,它根据排序哪个属性。为了解决这个问题,你可以定义接收属性名称的函数,然后创建一个基于属性名称的比较功能,这里是这个函数的定义。

功能createComparisonFunction(propertyName的){

返回功能(objectl,Object2的){

VAR值1 = objectl将[PropertyName];

VAR值2 = Object2的将[PropertyName];

如果(值1返回-1;

否则如果(值1>值2){

返回1;

否则{

返回0;

}

};

}

这个功能看起来有点复杂,但实际上没有什么比另一个函数的更多的嵌套函数,并在封面的功能再加上运营商的回报。接收propertyName的内部参数的功能后,将其使用方括号符号获取一个给定的属性的值。获得所期望的属性值之后,定义的比较函数是非常简单的。上述功能可以在下面的示例中被用作这样的:

VAR数据= [{名: “扎卡里”,年龄:28),TNAME: “尼古拉斯”,年龄:29}];

数据。排序(createComparisonFunction( “名字”));

警报(数据[数据[0]。名称); //尼古拉斯

数据。排序(createComparisonFunction( “时代”));

警报(数据[O]。名称); //扎卡里

在这里,我们创建数据的数组,其中包含两个对象。其中每个对象包含一个name属性和年龄属性。默认情况下,sort()方法会调用每个对象的toString()方法来确定它们的顺序; 但结果往往是不符合人的思维习惯。因此,我们呼吁createComparisonFunction(N NAME“)根据每个对象的名称属性的值方法创建一个比较功能,分类。其结果是第一个名称为“尼古拉斯”,年龄29的顶面,是对象。然后,我们用createComparisonFunction比较函数返回(“时代”),这是由对象的年龄属性进行排序。结果是一个数值名称“扎卡里”,年龄值对象28的第一行中。
 

由佰亿金科原创文章,请互相进步分享。转载请注明出处,谢谢。
 
      想了解更多关于建站资讯的文章请点击:长春网站建设
 
 
      非特殊说明,本文为本站原创(翻译)文章,转载请注明:本文转自:佰亿金科。
 
 
      本文链接:http://www.0431aa.com/a/news/jzzs/2018/1022/714.html

 

服务支持

我们珍惜您每一次在线询盘,有问必答,用专业的态度,贴心的服务。

让您真正感受到我们的与众不同!