Что делают символы комментариев в MDC для forEach? - PullRequest
2 голосов
/ 10 августа 2010

JavaScript в современных браузерах включает метод Array.forEach, который позволяет написать следующее:

[1,2,3].foreach(function(num){ alert(num); }); // alerts 1, then 2, then 3

Для браузеров, у которых нет Array.forEach на прототипе Array, MDC предоставляет реализацию , которая делает то же самое:

if (!Array.prototype.forEach) {
  Array.prototype.forEach = function(fun /*, thisp*/) {
    var len = this.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i < len; i++) {
      if (i in this)
        fun.call(thisp, this[i], i, this);
    }
  };
}

Почему эта реализация использует / * и * / в определении функции? То есть почему написано function(fun /*, thisp*/) вместо function(fun, thisp)?

Ответы [ 2 ]

4 голосов
/ 10 августа 2010

Потому что это комментарий.

function(fun /*, thisp*/) совпадает с function(fun). В заголовке функции нет второго аргумента.

В середине функции вы видите объявленную переменную thisp и присваиваете значение второго аргумента. Комментарий в определении функции просто указывает на то, что вы можете вызвать функцию с двумя аргументами, хотя эти два аргумента не определены в заголовке функции.

0 голосов
/ 10 августа 2010

Ну, вы принимаете это слишком осторожно и синтаксически. Это просто комментарий.

Когда они говорят,

function(fun /*, thisp*/) {
   // body
}

они на самом деле указывают на опцию, что вы можете раскомментировать ее и отправить thisp в качестве аргумента вместо объявления ее в теле функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...