【问题标题】:Variable scope in node.js or casper.jsnode.js 或 casper.js 中的变量范围
【发布时间】:2012-11-24 08:10:51
【问题描述】:

我觉得问这个问题很愚蠢。但是我对下面的变量范围aaa 有一个烦人的问题。最后不应该输出test吗?但事实并非如此。我在函数中使用 aaa 做错了什么?

var casper = require('casper').create();

var aaa = 'test';
casper.start('http://google.com/', function() {
    this.echo("I'm in");
});

casper.run(function(aaa) {
  this.echo(aaa);
  this.exit();
});

【问题讨论】:

    标签: javascript node.js scope phantomjs casperjs


    【解决方案1】:

    当您回显aaa 时,它使用函数的第一个参数中定义的aaa。如果您的第一个参数被称为 bbb 或其他名称,那么您将看到您期望的输出,因为它将使用外部闭包中定义的 aaa

    【讨论】:

    • @HP。符号掩盖(掩盖,优先于)在封闭范围中定义的符号的这种业务称为“遮蔽”。例如,echo 函数的 aaa 参数“遮蔽”了全局声明的 aaa
    • 只是为了对 Brad 的回答进行一些澄清:在函数内部,传入变量就像用 var 关键字定义它。所以 var aaa = 'test'; function(aaa){} 就像说 var aaa = 'test'; function(){ var aaa = '别的东西'; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 2018-04-27
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多