Heim Web-Frontend js-Tutorial javascript两种function的定义介绍及区别说明_javascript技巧

javascript两种function的定义介绍及区别说明_javascript技巧

May 16, 2016 pm 05:34 PM
function

一般情况下两者的调用结果是一样的,但是还是有区别的。
第一种方式:

复制代码 代码如下:

function a(){
alert('old');
}
var b=a;
function a(){
b();
alert('new');
}
a();//浏览器就会出现内存溢出的情况

第二种方式:
复制代码 代码如下:

function a(){
alert('old');
}
var b=a;
var a=function(){
b();
alert('new');
}
a();//浏览器就会按顺序alert出‘old'和‘new'

这里就可以很明显区分两个方式的区别了。定义的顺序不同。
第一种,刚开始其实没有重新定义 a 这个function 而在里面执行了其本身。
第二种方式, a = function () 这里没有执行到 function 里面的代码 a 已经被重新定义了。所以这里的重定义是有效的
补充1:
复制代码 代码如下:

function a(){
alert('old');
}
var b=a;
function a(){
b();
alert('new');
}

编译时: 首先a被定义为alert("old"), 接着又被定义成b();alert("new");
运行时: b = function a(){b();alert("new");}, 此时b和a一样, 函数体中直接调用b, 无论从a调用还是从b调用结果都一样, 产生堆栈溢出
另一方面
复制代码 代码如下:

function a(){
alert('old');
}
var b=a;
var a=function(){
b();
alert('new');
}

编译时: a被定义为alert("old")
运行时: b=function a(){alert("old")}; a=function(){b();alert("new")}; 此时b的函数体中不包括ab中任何一个, a只调用b... 无论怎样都不会产生堆栈溢出...
补充2:
一般来说,都会用第一种的写法来避免代码污染,但如果你需要保留原function,就要用第二种写法,反正两种方法都是符合w3c的。
事实上第一种写法是后来才有的,这种写法是经过优化的。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet Funktion? Was bedeutet Funktion? Aug 04, 2023 am 10:33 AM

Was bedeutet Funktion?

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle Mar 16, 2024 am 09:03 AM

Detaillierte Erläuterung der Rolle und Funktion der MySQL.proc-Tabelle

Was ist der Zweck der Funktion „enumerate()' in Python? Was ist der Zweck der Funktion „enumerate()' in Python? Sep 01, 2023 am 11:29 AM

Was ist der Zweck der Funktion „enumerate()' in Python?

Die Verwendung und Funktion der Vue.use-Funktion Die Verwendung und Funktion der Vue.use-Funktion Jul 24, 2023 pm 06:09 PM

Die Verwendung und Funktion der Vue.use-Funktion

Was ist die Verwendung der js-Funktion? Was ist die Verwendung der js-Funktion? Oct 07, 2023 am 11:25 AM

Was ist die Verwendung der js-Funktion?

file_exists()-Funktion in PHP file_exists()-Funktion in PHP Sep 14, 2023 am 08:29 AM

file_exists()-Funktion in PHP

So verwenden Sie SOA-Funktionen in PHP So verwenden Sie SOA-Funktionen in PHP May 18, 2023 pm 01:10 PM

So verwenden Sie SOA-Funktionen in PHP

So verwenden Sie die Funktionsschnittstelle in Java8 So verwenden Sie die Funktionsschnittstelle in Java8 Apr 17, 2023 pm 09:04 PM

So verwenden Sie die Funktionsschnittstelle in Java8

See all articles