问个 js 的问题...

2014 年 7 月 29 日
 xFan
"Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。"

http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html


想知道这句话到底是什么意思...是不是写错了?
3617 次点击
所在节点    问与答
18 条回复
xFan
2014 年 7 月 29 日
呃..没写完全就发了..

我想的是..函数读取全局变量..为什么会是特殊之处...

= =# ...
mufeng
2014 年 7 月 29 日
因为别的语言都不做这种事, 开销大
xFan
2014 年 7 月 29 日
@mufeng 恩...原来如此..谢谢谢谢..!~!~
hellojinjie
2014 年 7 月 29 日
@mufeng
@xFan
他这句话错了。。。难道有语言不允许在函数里读取全局变量嘛?????
NemoAlex
2014 年 7 月 29 日
应该是跟 Java 和 C 之类的语言比,这些语言只有“外部变量”,而没有真正意义上的全局变量。
在浏览器中运行的 JS,通常认为 Window 是一个全局对象,Window 下的属性是全局变量。
不过文中这句话这样说并不是很合适,好像是在强调“可以读取”一样,这是不对的。
xFan
2014 年 7 月 29 日
@hellojinjie 恩 我最开始也是你这种想法..所以来讨论一下.
Tonni
2014 年 7 月 29 日
Javascript有两种作用域:全局作用域和局部作用域,每当调用一个函数就会生成一个局部作用于,局部作用域可以通过闭包查到到外级作用域的属性,这里的外级作用域可能是函数作用域也可能是全局作用域,而全局作用域则不能向下查找局部作用域的属性。
jsonline
2014 年 7 月 29 日
这也是JS的坑爹之处。
mufeng
2014 年 7 月 29 日
@hellojinjie js的全局变量, 简单暴力, 特别容易污染, 所以我说别的语言不做这个
davepkxxx
2014 年 7 月 29 日
除了某些不支持全局变量的语言,我想不到有哪个做不到这一点。
davepkxxx
2014 年 7 月 29 日
哦,这里说的是全局变量,和静态变量搞混了。
clino
2014 年 7 月 29 日
我觉得是写错了,应该改成
"Javascript语言的特殊之处,就在于函数内部可以直接**声明**全局变量"
hellojinjie
2014 年 7 月 29 日
@clino 正解,哈哈
clino
2014 年 7 月 29 日
上面写错了,应该是定义,不是声明
NemoAlex
2014 年 7 月 29 日
@clino
Javascript语言的特殊之处,就在于函数内部可以一不小心就声明全局变量
rming
2014 年 7 月 29 日
@NemoAlex 怎么我也感觉是定义呢,虽然我不懂JS。。
xFan
2014 年 7 月 29 日
@clino 这个应该是正解...
clino
2014 年 7 月 29 日
@NemoAlex 其实 lua 也是这样,不写 local 就会定义成全局变量

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

https://v2ex.ih06.com/t/125009

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

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

© 2021 V2EX