JavaScript函数声明与变量声明之间的区别分析

不言
Lepaskan: 2018-09-11 15:14:34
asal
1469 orang telah melayarinya

本篇文章给大家带来的内容是关于JavaScript函数声明与变量声明之间的区别分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

今天,又由一到题目引发了一场我跟JS基础的较量:首先是

var getName = function(){alert(1)};
function getName(){alert(2)};

getName();// 1
Salin selepas log masuk

or

function getName(){alert(2)};
var getName = function(){alert(1)};

getName();// 1
Salin selepas log masuk

为什么我调换声明顺序,结果还是输出以 var 形式声明的函数的值?
有人回答我说 "啊,变量提升呀...",我最开始的理解,就算变量提升,第一种情况提升之后,应该是这样啊:

var getName;
getName = function(){alert(1)};
function getName(){alert(2)};
Salin selepas log masuk

最后应该输出 2 才对啊(很理直气壮)。
殊不知不只有var声明才会提前,以function fn(){}这种形式声明的函数,会被提升到作用域的最最顶部,然后再是变量的提升。
具体请看下面例子:

fn();//Uncaught TypeError: fn is not a function
var fn = function(){console.log(1)};
Salin selepas log masuk

but

fn();//2
var fn = function(){console.log(1)};
function fn(){console.log(2)}
Salin selepas log masuk

足以说明函数提升的更凶一些。

相关推荐:

javascript变量声明实例分析_javascript技巧

JavaScript全局变量声明和优缺点介绍

Atas ialah kandungan terperinci JavaScript函数声明与变量声明之间的区别分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan