JavaScript 变量不支持块级作用域
文章目录
分析
在看 Express 的插件 connect 源码,cookieSession(代码片段后边附上)里有个变量作用域问题很费解。
后边代码中变量 originalHash
的使用问题,一开始我还以为是个 Bug,以为根据它定义的位置,在它的那个块结束时就没作用了。
后来查了下 JavaScript 的变量作用,才知道 JS 没有块级作用域,只有全局作用域和函数级作用域。所以这里的 originalHash
作用域为 function cookieSession(req, res, next)
,后边的 res.writeHead
里对他的访问就是闭包变量访问,是没有问题的。
附上被研究的代码
因为代码较长也可能多次修改,这次使用 GitHub Gist 方式托管代码。
虽然 GitHub Gist 做代码片段的版本控制很好使,但国内访问可能不稳定,当大家没看见下边的代码时,请自行科学上网,访问:https://gist.github.com/yangsf5/9088398
。
代码如下: