作者kisha024 (4545454554)
看板Ajax
标题[问题] javascript 函数的提升
时间Thu May 12 16:09:57 2016
各位好
我是参考这里的资料
http://fireqqtw.logdown.com/posts/258823-javascript-function-notes
function one() {
console.log('global one');
}
function two() {
console.log('global two');
}
function hoistFun() {
console.log(typeof one);
console.log(typeof two);
one();
two();
function one() {
console.log('local one');
}
var two = function() {
console.log('local two');
}
}
---------------------------------------------------------------------
我不懂的是 two这个函数不是在hoistFun()里面又被定义一次
为什麽console.log(typeof two); 结果却是undefined?
另一个问题是 底下这两种宣告方式 在使用上都是写 two();
那到底有什麽差别呢? 谢谢
function two() {
console.log('global two');
}
var two = function() {
console.log('local two');
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.127.81.14
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1463040600.A.5A7.html
1F:推 Kenqr: 变数宣告会自动移到函数的开头,所以two等於是在hoistFun 05/12 16:50
2F:→ Kenqr: 的开头就宣告了,但是在console.log之後才定义内容, 05/12 16:50
3F:→ Kenqr: 所以console.log时会显示为undefined 05/12 16:50
4F:→ johnny9144: 可以看一下 JavaScript 的优良部份 有讨论这个问题 05/12 20:00
5F:推 mrbigmouth: 大推优良部份 很多让人confuse的js问题这里都讲了 05/12 20:02
6F:→ kisha024: 谢谢 05/13 15:31