相关疑难解决方法(0)

如何在PHP中定义本地函数?

当我尝试这样做时:

function a()
{
    function b() { }
}

a();
a();
Run Code Online (Sandbox Code Playgroud)

我得到Cannot redeclare b....
当我试图这样做时:

function a()
{
    if(!isset(b))
        function b() { }
}

a();
a();
Run Code Online (Sandbox Code Playgroud)

我得到unexpected ), expected ....
如何将函数声明为本地函数并在a返回时将其遗忘?我需要将函数传递给它array_filter.

php function

7
推荐指数
2
解决办法
8689
查看次数

用JavaScript双重命名?

只是想问一个问题:在JavaScript中将函数命名为变量有什么理由吗?

(我的意思是使用Dep两次。只是在Vue.js中爬行并找到了这个)

var Dep = function Dep () {
    this.id = uid++;
    this.subs = [];
  };
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

7
推荐指数
1
解决办法
92
查看次数

查明函数是匿名的还是在对象中定义的

我正在尝试用 JavaScript 编写一个辅助方法。如果发送函数或对函数的引用,它的行为应该有所不同。

我想像这样使用它:

helper('div', function () { return false; })
helper('div', obj.fn)
Run Code Online (Sandbox Code Playgroud)

我不明白的是:如何在辅助函数内部区分两者之间的区别?

我认为这是因为 JavaScript 在发送 obj.fn 之前首先评估它。我发现的唯一解决方法是将 obj.fn 作为 obj 发送,即

helper('div', { fn: obj.fn })
Run Code Online (Sandbox Code Playgroud)

然后我可以用 typeof 来区分两者之间的区别。但我真的很喜欢某种无需额外对象声明的方法。

javascript function

6
推荐指数
1
解决办法
4188
查看次数

关于Javascript函数的简单问题,调用/定义的差异

有人可以解释以下功能定义之间的区别吗?

var alertMessage = function alertMessage(message) {
  alert(message);
}

var alertMessage = function(message) {
  alert(message);
}
Run Code Online (Sandbox Code Playgroud)

各自的含义是什么?谢谢!

javascript

6
推荐指数
1
解决办法
187
查看次数

这两种方式调用函数的区别

PopupFirstNameButton.addEventListener('click', FirstNameFunction);

// This gets called
function FirstNameFunction(){
  alert("Hello");   
}

// This does not
var FirstNameFunction = function (){
    alert("Hello");   
}
Run Code Online (Sandbox Code Playgroud)

javascript

6
推荐指数
2
解决办法
564
查看次数

在javascript中重新定义Array构造函数

说我有以下代码:

var secrets;
Array = function() {
  secrets = this;
};
Run Code Online (Sandbox Code Playgroud)

上面的示例的作者说,代码正在重新定义Array构造函数.首先,我不确定所指的this是什么.任何人都可以建议吗?

第二:以下代码是否相同?

var secrets;
function Array() {
  secrets = this;
}
Run Code Online (Sandbox Code Playgroud)

顺便提一下,上面的代码来自以下关于Json漏洞的文章:请参阅此处

javascript

6
推荐指数
1
解决办法
1700
查看次数

哪个是定义函数的更好方法?

它们之间有什么区别吗?我一直在使用这两种方式,但不知道哪一种做什么,哪种更好?

function abc(){

    // Code comes here.
}

abc = function (){

    // Code comes here.
}
Run Code Online (Sandbox Code Playgroud)

定义这些功能有什么区别吗?像i ++和++ i这样的东西?

javascript function definition user-defined-functions hoisting

6
推荐指数
1
解决办法
100
查看次数

为什么window.addEventListener不起作用?

在window.onload事件上,我希望调用一个函数。如果我按照下面的定义进行定义,则不会调用该函数。

try {
    window.addEventListener("load", initialiseTable, false);
} catch(e) {
    window.onload = initialiseTable;
}

var initialiseTable = function () {
    console.log("hello world!!");
};
Run Code Online (Sandbox Code Playgroud)

但是如果我将函数声明更改为

function initialiseTable() {
    console.log("hello world!!");};
Run Code Online (Sandbox Code Playgroud)

它有效,有什么主意吗?

javascript

6
推荐指数
1
解决办法
1万
查看次数

模块模式中的函数声明与函数表达

我刚刚了解了函数声明和函数表达式之间的区别.这让我想知道我是否在AngularJS代码中做得对.我正在遵循John Papa使用的模式,但现在它似乎与模块模式的典型JS方法不一致.John Papa在他的控制器和服务中大量使用嵌套的函数声明.这不好吗?

有没有理由支持这个:

var foo = (function() {
    var bar = function() { /* do stuff */ };
    return {
       bar : bar
    };
}());

foo.bar();
Run Code Online (Sandbox Code Playgroud)

对此:

var foo = (function() {
    return {
       bar : bar
    };

    function bar() { /* do stuff */ };
}());

foo.bar();
Run Code Online (Sandbox Code Playgroud)

我主要是一名C#开发人员,仍然习惯于JavaScript的所有细微差别.我更喜欢后一种方法,因为IIFE中的所有功能都是私有的,顶部的揭示模块模式实际上是公共部分.在C#类中,我总是在私有支持函数之前拥有我的公共属性和方法.但是,我意识到它在JS世界中可能不那么干脆.

使用后一种方法有哪些隐患(如果有的话)?

javascript module-pattern function-declaration function-expression iife

6
推荐指数
1
解决办法
736
查看次数

Angular 2 rxjs嵌套Observables

我希望创建一个函数,返回一个Observable<any>但在返回之前另一个异步任务必须完成(an Observable<string>),以便将值传递给返回的Observable.

 @Injectable()
 export class MyComponent
 {

      GetAuthToken = function() : Observable<string>
      {
           return this._storageService.GetAsString('authToken');
      }

      GetData = function(authToken) : Observable<any>
      {

           let headers = new Headers();
           headers.append('authToken', authToken);
           var getUsers = this._http.get('/api/endpoint', { headers: headers })
                 .map((resonse: Response) => resonse.json()));

           return getUsers;        
      }


      DoIt = function() : Observable<any>
      {
          this.GetAuthToken ().Subsribe(t=> {
              return GetData(t); 
          })
      }          


 }
Run Code Online (Sandbox Code Playgroud)

因此,我希望在GetData函数中执行GetAuthToken函数,等待其完成,然后仍然返回http observable,而不是将authToken参数传递给GetData函数.

执行DoIt函数将返回订阅者,而不是GetData Observable

javascript rxjs rxjs5 angular

6
推荐指数
1
解决办法
3486
查看次数