在声明函数之前定义javascript函数的Typeof?
请有人解释一下或链接到一个资源,告诉我为什么:在声明函数之前定义javascript函数的Typeof?,javascript,parsing,function,declaration,typeof,Javascript,Parsing,Function,Declaration,Typeof,请有人解释一下或链接到一个资源,告诉我为什么: <script type=" type="text/javascript"> if(typeof window.myfunc == "function"){ alert("Why does myfunc already exist ?"); } function myfunc(){ } </script> 一个字:吊装 摘自JavaScript Garden的一段话:
<script type=" type="text/javascript">
if(typeof window.myfunc == "function"){
alert("Why does myfunc already exist ?");
}
function myfunc(){
}
</script>
一个字:吊装
摘自JavaScript Garden的一段话:
上述函数在程序开始执行之前被挂起;因此,它在定义它的范围内的任何地方都可用,即使在源中的实际定义之前调用它也可以
更多信息请点击这里:一个词:提升
摘自JavaScript Garden的一段话:
上述函数在程序开始执行之前被挂起;因此,它在定义它的范围内的任何地方都可用,即使在源中的实际定义之前调用它也可以
此处的更多信息:命名函数声明,包括函数体,被提升到
JavaScript中的作用域顶部。我建议你读书
如果您这样做,那么您将函数分配给一个命名的
变量,只有变量声明将被提升,但它不会
实际发生赋值之前的值:
if (typeof myFunc == 'function') {
// will not be reached
}
var myFunc = function() { ... }
上述情况实际上被视为:
var myFunc; // myFunc is undefined
if (typeof myFunc == 'function') {
// will not be reached
}
myFunc = function() { ... }
命名函数声明(包括函数体)被提升到
JavaScript中的作用域顶部。我建议你读书
如果您这样做,那么您将函数分配给一个命名的
变量,只有变量声明将被提升,但它不会
实际发生赋值之前的值:
if (typeof myFunc == 'function') {
// will not be reached
}
var myFunc = function() { ... }
上述情况实际上被视为:
var myFunc; // myFunc is undefined
if (typeof myFunc == 'function') {
// will not be reached
}
myFunc = function() { ... }
当您将函数定义为var myfunc=function(){}
时,您将看到差异。当您将函数定义为var myfunc=function(){}
时,您将看到差异。感谢您的解释。我从来没有意识到这一点。谢谢你的解释,怀亚特。我从未意识到func=function(){}语法实际上起了作用。这解决了我的问题!因为我运行一个Web服务,当我的javascript文件包含两次时,我的函数也会被提升两次。问题是,在第二次提升函数之前使用该函数创建的对象(如obj=new myfunc())不会受到重新提升函数后对函数原型所做更改的影响。很难解释,但希望你能明白我的意思。无论如何,谢谢你的语法提示!谢谢你的解释,怀亚特。我从来没有意识到这一点。谢谢你的解释,怀亚特。我从未意识到func=function(){}语法实际上起了作用。这解决了我的问题!因为我运行一个Web服务,当我的javascript文件包含两次时,我的函数也会被提升两次。问题是,在第二次提升函数之前使用该函数创建的对象(如obj=new myfunc())不会受到重新提升函数后对函数原型所做更改的影响。很难解释,但希望你能明白我的意思。无论如何,谢谢你的语法提示!