2016-04-18 3 views
1

Я вижу предупреждение в файле JavaScript в PhpStorm в моем проекте, о котором я хотел бы что-то сделать. У меня есть следующий код:Предупреждение PhpStorm: тип аргумента не присваивается типу параметра

function someFunction() { 
    ... 
    var myArray = [1, 2, 3, ...]; 
    $.each(myArray, function() { someOtherFunction(this); }); //warning on this line 
    .... 
} 

/** 
* @param {Number} value 
*/ 
function someOtherFunction(value) { 
    ... 
} 

На линии, указанной в коде, PHP дает мне это предупреждение:

Аргумент типа SomeFunction не может быть назначен для параметра Тип Количество

Я понимаю, что это значит и почему это предупреждение дается: PhpStorm не знает, что jQuery переопределяет this контекст в обратном вызове цикла .each. Мой вопрос в том, что я могу сделать, чтобы намекнуть, что такое переопределение происходит и что в действительности есть this?

ответ

0
function someFunction() { 
    ... 
    var myArray = [1, 2, 3, ...]; 
    $.each(myArray, function(i, val) { someOtherFunction(val); }); //warning on this line 
    .... 
} 

http://api.jquery.com/jquery.each/ JQuery документы здесь показывают, что аргументы функции обратного вызова то, что на самом деле обрабатывает значения. Первый переданный аргумент - это индекс массива, а второй - значение, которое вы ищете.

Вещь this никогда не будет просто примитивной ценностью. jQuery всегда обертывает его как объект.

+0

_jQuery всегда обертывает его как object_ - true, но мой код работает так, как ожидалось. –

+0

@AleksG О, я уверен, что это так, но проблема в том, что PHPStorm ожидает примитивное число (или, возможно, Number ofject), а не объект с номером. Хм, попробуй это. Это общая догадка, но что происходит, если вы делаете someOtherFunction (+ this) ;? – aaronofleonard