标签: scope

无法访问事件中的对象属性

我有这样的代码:

var Obj = {
  el : document.getElementById("elementId"),

  doSomething : function(){ this.el.property = "value" }
};

Obj.el.addEventListener('click', Obj.doSomething);
Run Code Online (Sandbox Code Playgroud)

但是this.el 当click事件被触发时,元素是未定义的?是什么导致这种情况发生?

注意:我不知道如何在这个编辑器中打破代码中的行,这就是为什么它在一行中.

javascript scope

-1
推荐指数
1
解决办法
75
查看次数

来自匿名函数的PHP访问变量

可能重复:
在创建匿名PHP函数期间呈现变量

我对PHP仍然很新,这让我感到困扰:

class Controller {
    ...
    ...
    function _activateCar() {
        $car_id = $this->data['car']->getId();
        // $car_id == 1
        $active_car = array_filter($this->data['cars'], function($car){
            // $car_id undefined
            return $car->getId() == $car_id;
        });
    }
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

为什么array_filter里面的函数不能访问$car_id变量?继续说未定义.

有没有其他方法可以$car_id访问而不是制作$_GET['car_id'] = $car_id;?使用global关键字没有帮助.

php scope function

-1
推荐指数
2
解决办法
146
查看次数

动态分配内存的功能范围

我有一个功能

int*AllocatedMemory(int n){
    int*p=malloc(n*sizeof(int));
    return p;
}
Run Code Online (Sandbox Code Playgroud)

离开函数后分配的内存是否会丢失范围,从而被释放?

c malloc scope function

-1
推荐指数
1
解决办法
681
查看次数

关于类的静态和最终变量效果

如果你执行这个程序你只会获得i值而不是SIB,我的问题是当类加载到内存SIB中时应该执行并且应该给ooutput,但是在这里我只得到i值?然后在类测试中保留一个方法,然后从另一个类调用该方法,然后您将获得SIB的输出,i方法(保持方法也作为静态最终)

    class Test      
    {
    static final int i =3;  
    static
    {
        System.out.println("SIB");
    }
    {
        System.out.println("IIB");
    }
    }
    class A1
    {
    public static void main(String[] args) 
    {
        System.out.println(Test.i);
    }
    }
Run Code Online (Sandbox Code Playgroud)

java scope

-1
推荐指数
1
解决办法
154
查看次数

C++:类变量如何被修改?

从有关const函数的MSDN页面

代码:

    // constant_member_function.cpp
class Date
{
public:
   Date( int mn, int dy, int yr );
   int getMonth() const;     // A read-only function
   void setMonth( int mn );   // A write function; can't be const
private:
   int month;
};

int Date::getMonth() const
{
   return month;        // Doesn't modify anything
}
void Date::setMonth( int mn )
{
   month = mn;          // Modifies data member
}
int main()
{
   Date MyDate( 7, 4, 1998 );
   const Date BirthDate( 1, 18, …
Run Code Online (Sandbox Code Playgroud)

c++ oop scope pass-by-value

-1
推荐指数
1
解决办法
287
查看次数

Perl需要显式的包名,但已在范围内定义(无严格工作)

我遇到的问题是,即使我已经在更高的范围内声明了我的变量,当我去使用它时,我被告知它需要显式的包名.代码如下:

my $stats = {
    privileges => (),
    missing_users => ()
};

LINE:
while (my $line = <$fh>)
{
    chomp($line);
    next if $line eq "";

    my $regex = "";
    my $type = "";

    while (($type, $regex) = each(%$entry_regex))
    {
        if ($line =~ /$regex/) {
            if ($type eq "EXCEPTION_PRIVS")
44:         {
45:             push(@{$stats{privileges}}, $1);
46:             next LINE;
            }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

全局符号"%stats"需要在Import Routine Log Pars er.pl第45行显式包名.

我没有收到此错误,并且脚本会根据需要运行,何时use strict;删除.

我认为,因为我已经在一个"更高"的范围内声明它应该可以访问循环中的代码.为什么我收到此错误?

perl scope

-1
推荐指数
1
解决办法
561
查看次数

非平凡的"未在此范围内声明"错误

我通过以下函数得到了"未在此范围内声明"的错误:

double monteCarlo(void)
{
    double intervalArea = 2*(upperBound - lowerBound); // (f_max(x)) - f_min(x))*(upperBound - lowerBound) - Could be calculated from derivative, but known for this function.
    for (uint currentPoints = (numPoints/100); currentPoints < numPoints; currentPoints += (numPoints/100))
    {   
        double area = randx = randy = 0;
        uint underCurve = 0;
        gsl_rng* rndGen = gsl_rng_alloc (gsl_rng_mt19937); // Initialize random number generation
        gsl_rng_set(rndGen,timeSeed()); // Seed random number generation

        for (uint point= 1; point <= currentPoints; point++)
        {
            randx = gsl_rng_uniform(rndGen); randy …
Run Code Online (Sandbox Code Playgroud)

c++ scope compiler-errors function

-1
推荐指数
1
解决办法
1975
查看次数

Javascript:何时以及何时不使用“this”

我很好奇何时需要/最佳实践使用关键字this。我知道this在确定函数this值时会使用它,但它总是需要吗?

我问的原因是因为我有一个内部函数,它在我的模块中调用,它真正做的就是对您传递给它的一些数据进行排序。我的问题是我应该使用关键字调用这个函数this还是单独调用这个函数。

例如:

function formatSomeData(data){
  //code........
}

this.formatSomeData(data);

        OR

formatSomeData(data);
Run Code Online (Sandbox Code Playgroud)

我知道调用函数的上下文及其目的对于回答问题很重要,但在这种情况下,就像我提到的,我真的不需要在this任何时候访问该对象。调用函数时使用它仍然是一个好习惯吗?我问的并不是“这个”如何工作,而是什么时候适合使用它,什么时候不适合。

javascript scope function this

-1
推荐指数
1
解决办法
6488
查看次数

修改一个对象也会修改同一类的所有其他对象

自从我上一个 C++ 项目以来已经很久了,现在我陷入了一个非常简单的问题。我创建了两个对象,并且只想修改其中之一。现在我不明白为什么另一个对象也被修改了......

主类:

#include "testobject.h"
#include <iostream>

int main() {
    TestObject o1;
    TestObject o2;

    std::cout << "object1 before: " << o1.getI() << std::endl;
    std::cout << "object2 before: " << o2.getI() << std::endl;

    o1.setI(2);

    std::cout << "object1 after: " << o1.getI() << std::endl;
    std::cout << "object2 after: " << o2.getI() << std::endl;

}
Run Code Online (Sandbox Code Playgroud)

测试对象类:

#include "testobject.h"

int i;

int TestObject::getI() {
    return i;
}

void TestObject::setI(int j) {
    i = j;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

object1 before: 0
object2 before: 0
object1 …
Run Code Online (Sandbox Code Playgroud)

c++ variables scope class datamember

-1
推荐指数
1
解决办法
691
查看次数

Typedef 在本地共享对象别名,但不是全局共享,但是如果与 typedef 不是同义,则 at tag 可以在本地或全局共享它,为什么?

这是问题的概述(clang 抛出的错误代码):

标签的 typedef 和 struct def;

typedef struct tag {int tag;} tag;
Run Code Online (Sandbox Code Playgroud)

这工作得很好:

struct tag {int tag;} tag;
Run Code Online (Sandbox Code Playgroud)

而这些 typedef 错误之一:

typedef struct {int tag;} tag;

/*or*/

typedef struct tag {int tag;} tag;

/*and then this following code fails from either of the two 
previous typedefs which the compiler errors about as being 
redeclared as as different kind of symbol. Not allowed to share 
typedef with object id:*/

tag tag;
Run Code Online (Sandbox Code Playgroud)

当指定相同名称的 typedef/tag 时,两个全局变量上的编译器错误:

/*error: redefinition of 'tag' as different …
Run Code Online (Sandbox Code Playgroud)

c struct pointers scope typedef

-1
推荐指数
1
解决办法
141
查看次数