相当于Python的本地人()?

时间:2013-09-18 02:30:37

标签: javascript

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

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

    return locals()

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

JavaScript有这样的东西吗?

2 个答案:

答案 0 :(得分:4)

scope本身无法在JavaScript中访问,因此没有相应的内容。但是,如果您绝对需要这种功能,则可以始终声明一个充当本地范围的私有变量。

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

    return locals;
}

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

答案 1 :(得分: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}