关于 JS 闭包,微小的发现与疑问

2016-09-02 21:52:34 +08:00
 Chigogo
function a(){
  alert(hehe);
}

function b(){
  var hehe="110";
  a();
}

b();

请在脑中调试,写下 alert()的结果。

1990 次点击
所在节点    问与答
15 条回复
Seita
2016-09-02 21:55:40 +08:00
难道不是 undefined 报错吗
t0byxdd
2016-09-02 22:00:20 +08:00
undefined
Chigogo
2016-09-02 22:04:30 +08:00
@Seita
@t0byxdd
为什么我的第一反应是报警电话?
tftk
2016-09-02 22:36:25 +08:00
因为你没看清 var hehe="110" 和 hehe="110" 的区别。
ChiangDi
2016-09-02 22:54:07 +08:00
你听过词法作用域吗,这个是最基础的
zhy0216
2016-09-02 22:56:03 +08:00
... 楼主这不是闭包...
作用域
ck65
2016-09-02 23:08:38 +08:00
JS 大部头二选一重新学一遍吧。
itisthecon
2016-09-02 23:40:33 +08:00
这个根本就不是闭包啊
think2011
2016-09-02 23:50:40 +08:00
出错
allan888
2016-09-02 23:52:23 +08:00
这确实不是闭包,是作用域的问题,这么搞才是:
function a(){
var hehe="110";
return ()=>{
alert(hehe);
};
}

a()();
echol
2016-09-02 23:59:29 +08:00
this 不一样
bind 一下就好
不是闭包
shiny
2016-09-03 00:03:03 +08:00
我感觉你们年轻人啊,还需要学习一个。
Chigogo
2016-09-03 00:39:14 +08:00
@zhy0216 收到!
@ChiangDi Lexical scope!
@shiny 我们毕竟还 too young !
@echol 搜噶~
YuJianrong
2016-09-03 09:53:50 +08:00
要问问题就好好问问题,这标题是什么鬼……
g0thic
2016-09-03 12:40:31 +08:00
这确实是基础的问题了,好好看看书吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303557

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX