1
Mutoo 2014-05-05 19:11:11 +08:00
运行的结果是 undefined 没错,因为 tryit 并没有返回值。但是会在控制台打印"global"。
|
2
forreal OP |
3
Mutoo 2014-05-05 19:27:51 +08:00 1
目测你是以 node 方式运行。那样的话 js 是以模块的方式被运行的,this 指向的是 node module。建议你用 Javascript Debug 模式运行。
|
4
RIcter 2014-05-05 19:29:00 +08:00
顺带问一个(/ω\)
var a = { a: 1, b: this.a } 如何让a.b的值为a.a。如上方法并不可以。目前我的解决方法是b: window.a.a |
5
sd4399340 2014-05-05 19:33:47 +08:00 1
http://bonsaiden.github.io/JavaScript-Garden/zh/#function.this
ES5 注意: 在严格模式下(strict mode),不存在全局变量。 这种情况下 this 将会是 undefined。 |
9
shichimiya 2014-05-05 20:43:59 +08:00 1
|
10
zzNucker 2014-05-05 20:44:24 +08:00 1
@RIcter
var a = { a: 1, b: function(){return this.a} } function才会新建一个执行环境。单纯一个{}是没有执行环境的,也就是你肯定知道的“js没有块级变量”。 |
11
RIcter 2014-05-05 20:57:30 +08:00
|
12
arzusyume 2014-05-06 09:11:25 +08:00 1
|
13
otakustay 2014-05-06 11:33:30 +08:00 2
node是因为在你的这段代码外面包了一层function,这层里面有module、exports、require这些,所以事实上你的var g并不是在global scope里的……
~/Dev/test ⌚ 11:33:17 $ cat test.js console.log(arguments.callee.toString()); ~/Dev/test ⌚ 11:33:21 $ node test.js function (exports, require, module, __filename, __dirname) { console.log(arguments.callee.toString()); } |
14
aec4d 2014-08-08 22:31:27 +08:00
@RIcter
对象的属性可以使用存储函数set/get定义 http://javascript.ruanyifeng.com/stdlib/object.html#toc11 a = { a : 1, get b(){return this.a}, } |