Javascript中两种函数的定义、引入和区分

一般来说,两次通话的结果是一样的,但还是有区别的。
第一条路:
复制代码代码如下所示:
函数A(){
警报(老的);
}
var;
函数A(){
(b);
警报(新的);
}
(a);浏览器将出现内存不足的情况。

第二方式:
复制代码代码如下所示:
函数A(){
警报(老的);
}
var;
var =函数(){
(b);
警报(新的);
}
(a);浏览器将按照旧和新的警告顺序。

这两种方式之间有明显的区别,定义的顺序是不同的。
第一个,在开始时,不重新定义一个函数并在其中执行它自己。
在第二种方法中,a函数()在函数中未执行的代码A被重新定义,因此这里的重新定义是有效的。
补充1:
复制代码代码如下所示:
函数A(){
警报(老的);
}
var;
函数A(){
(b);
警报(新的);
}

编译时间:首先,A被定义为警报(),然后定义为B();警报();
运行时:B =函数A()B();警报();}此时,B和A在函数体中直接调用B,不管是从调用还是从B调用结果,它产生堆栈溢出。
另一方面
复制代码代码如下所示:
函数A(){
警报(老的);
}
var;
var =函数(){
(b);
警报(新的);
}

编译时:A被定义为警报()
运行时:函数A(){警报( )};A =函数();B();警报(新)};此时,B函数体不包含AB中的任何一个,a只调用ab,不管它如何生成堆栈溢出。
补充2:
一般来说,第一种书写方式是用来避免代码污染的。但是如果你想保留原有的功能,你需要使用第二种写作方法。不管怎样,这两种方法都与W3C一致。
事实上,第一种写作方式是后来的,写作是经过优化的。