5

Python 的locals()函数在函数范围内调用时,会返回一个字典,其键值对是函数局部变量的名称和值。例如:

def menu():
    spam = 3
    ham = 9
    eggs = 5

    return locals()

print menu()  # {'eggs': 5, 'ham': 9, 'spam': 3}

JavaScript有这样的东西吗?

4

2 回答 2

4

scope本身在 JavaScript 中是不可访问的,所以没有等价物。但是,如果您绝对需要这种功能,您总是可以声明一个充当本地范围的私有变量。

function a() {
    var locals = {
        b: 1,
        c: 2
    };

    return locals;
}

此外,如果您想使用类似的东西的原因locals()是检查变量,您还有其他解决方案,例如使用浏览器的开发工具设置断点并添加监视。直接debugger;放入代码中也可以在某些浏览器中使用。

于 2013-09-18T02:42:15.557 回答
2

不,在 Javascript 函数中没有类似的东西,但是有一种方法可以完成非常相似的事情,使用this定义对象的所有属性,而不是作为局部变量:

function menu(){
  return function(){

    this.spam = 3;
    this.ham = 9;
    this.eggs = 5;

    // Do other stuff, you can reference `this` anywhere.
    console.log(this); // Object {'eggs': 5, 'ham': 9, 'spam': 3}

    return this; // this is your replacement for locals()
  }.call({});
}

console.log(menu()); // Object {'eggs': 5, 'ham': 9, 'spam': 3}
于 2013-09-18T02:37:21.287 回答