作者tnsshnews (tnsshnews)
看板Ajax
标题[问题] node.js的promise如何使用外面的变数
时间Tue May 19 00:44:00 2015
var http = rest.testing(object);
var temp = '***';
http.then(
function (response) {
console.log(response);
//这里面要怎样使用promise外面的变数, 如temp, object呢
}
);
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.127.173.173
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1431967443.A.FE9.html
1F:推 s25g5d4: 直接用不就好了? 05/19 00:56
2F:→ tnsshnews: 直接用会显示undefined, promise内与外是两个不同时空 05/19 01:14
3F:→ mmis1000: 你应该去google一下closure,正常能直接用 05/19 01:15
4F:→ mmis1000: 不能用这种事不会发生在js 05/19 01:15
5F:→ tnsshnews: node.js有特殊用法? 05/19 01:17
6F:→ mmis1000: 除非你的用的framework干了奇怪的事,导致scope搞丢 05/19 01:18
7F:→ mmis1000: 这不是nodejs的feature,这是js本身的设计 05/19 01:18
8F:→ mmis1000: 就算是browser里的一样能这样用 05/19 01:19
9F:→ mmis1000: 只要你在function的内部不要用var把它宣告成local就好 05/19 01:20
10F:→ mmis1000: 他就会自动去扫外层scope的变数来用 05/19 01:21
11F:→ tnsshnews: 补充 外层还有一个for loop 05/19 01:22
12F:推 LPH66: 再不然应该可以用类似 #1J-pvObM 里那样 05/19 01:31
13F:→ mmis1000: js里唯一创造local变数的方式是在function里放var,其他 05/19 01:38
14F:→ mmis1000: 无论是for里放var也好,while也好,都不会产生新变数 05/19 01:39
15F:→ mmis1000: 只有function ()後的那一对括弧能产生新scope 05/19 01:40
16F:→ mmis1000: 然後无论你在function里的哪个位置放var,意义都一样, 05/19 01:41
17F:→ mmis1000: local变数宣告会被自动移到function最开头 05/19 01:41
18F:→ mmis1000: 放在for的三个statement也好,放在if里也好,意义都一样 05/19 01:42
20F:推 mrbigmouth: 直接用就好了+1 你到底怎麽办到变undefined的? 05/19 08:50
21F:推 y2468101216: 刚刚测试过了 直接用就好了 05/19 10:27
22F:推 s25g5d4: 认真回 这叫 static(lexical) scope 05/19 10:35
23F:→ s25g5d4: 所以 js 找变数并不是从 runtime stack 找,而是从原始码 05/19 10:37
24F:→ s25g5d4: 开始往上找 05/19 10:37