为什么我可以在javascript中定义两次相同的函数
Why am I able to define same function twice in javascript?
我有一个javascript文件,在其中我编写了一堆jquery函数。我有一个函数可以返回角度范围。我发现,如果我把同一个函数写两次,代码仍然会执行。
function getngScope()
{
alert(2);
return angular.element($('#data-area')).scope();
}
function getngScope()
{
alert(1);
return angular.element($('#data-area')).scope();
}
当我调用getngScope()
时,我收到了"1"警报,并返回了作用域。为什么它会有这种行为?
Object的第二个定义覆盖第一个定义。通常,对象的最后一个定义会覆盖以前的所有定义。
JavaScript中的函数是对象:
(function () {}) instanceof Object === true
当您创建一个新的全局函数f
时,相当于在window
对象中创建一个属性并将函数定义分配给该变量,如果您创建了一个函数:
function myFun() { console.log('my function') };
然后检查window.myFun
的值,你会注意到它与myFun
:的功能相同
window.myFun === myFun // true
您还会注意到,修改window.myFun
会更改/覆盖myFun
。
例如
function myFun() { console.log('myFun') };
myFun(); // Prints: 'myFun'
// Overwrite myFun
window.myFun = function () { console.log('NoFun') };
myFun(); // Prints: 'NoFun'
函数的第二个定义优先。
我建议您阅读Crockford的《JavaScript中的函数:好的部分》一章。
函数是内存堆栈中的数据,因此当您定义另一个同名函数时,它会覆盖前一个函数。
很明显,同一个函数不应该定义两次。然而,当您这样做时,后一个定义是唯一适用的1。尽量不要那样做。找到另一种方法,而不是给两个函数取相同的名称。
第二个函数取代了第一个函数,您可以通过修改函数名称来更改它,如果不修改,您可以添加多个参数。。如果需要的话。。。为了解释这种行为,与其他编程语言不同,javascript在执行时不会返回任何错误。。因此u可以假设它只是在执行过程中通过重写函数来纠正自己。
相关文章:
- Meteor Router数据函数被调用两次
- Append元素在运行两次函数后不显示
- 为什么我们要在语句中两次将函数括在括号中
- 调用一个函数两次
- java-script 函数被调用两次
- Ajax Post-Submit函数提交两次
- 在一个页面中包含两次的脚本中调用函数
- 我必须点击两次才能使用jQuery激活函数
- 为什么这个函数执行了两次
- isHidden函数要求我在应用响应显示时单击两次
- 调用随机函数Javascript,但不能两次调用相同的函数
- jQuery停止函数运行两次
- JS函数只需点击一次即可触发两次
- 在一个页面中使用相同的javascript函数两次
- matchMedia调用函数两次
- JS函数中的一个点击按钮被调用了两次
- jQuery移除两次函数调用
- 在JS中定义两次函数.根据网页指示要使用的定义
- 防止在两个触发事件中执行两次函数
- AngularJS需要执行两次函数才能显示结果