【问题标题】:Jshint / PhpStorm: "Unresolved variable" when using jquery .data()Jshint / PhpStorm:使用 jquery .data() 时出现“未解析的变量”
【发布时间】:2016-01-04 17:54:35
【问题描述】:

Phpstorm 一直告诉我我有一个未定义的变量 input.connectto

HTML: <div class="b-showColorinList" data-connectto="123456" data-othervalue="Lorem Ipsum">...

JS:

$(document).on('click', '.b-showColorinList', function() {
    cm.showColorInList( $(this) );
});

还有:

/**
 * Uses ajax to get other color in list view
 * @param {object} inputObj
 */
cm.showColorInList = function(inputObj) {
"use strict";

var input = inputObj.data(),
    parent = $("#"+input.connectto),
    othervalue = input.othervalue;

我知道我可以忽略 jshint 中的一行,但是有什么方法可以使用 jsdoc 使其正确,例如将 input 定义为对象

【问题讨论】:

  • 如果您使用的是 jQuery,为什么不使用 data("connectto")(如 $('.b-showColorinList').data('connectto');)?
  • 对不起,我把代码缩短了一点。一个数据字段实际上还有更多。现在修复了
  • 我明白——我只是在想——如果这不是任务关键型代码或者不是经常执行或需要立即执行且几乎没有延迟的东西..那么为什么不打电话给@ 987654328@具有特定参数的方法。
  • 试试这个(JSDoc):/** * @typedef {Object} input * @property {String} connectto * @property {String} othervalue */——只要格式化好(cmets 不允许多行片段)

标签: jquery phpstorm jshint jsdoc


【解决方案1】:

根据JSDoc docs,正确的方法应该是使用@typedef来定义实际的对象结构(如果它稍后将在另一个地方重用时特别有用)和@type来声明特定变量的类型:

/**
 * @typedef {Object} MyInputData
 * @property {string} connectto 
 * @property {string} othervalue
 */

/** @type {MyInputData} */
var input = inputObj.data();

这个(只有@typedef 和变量名作为类型名)似乎也适用于 PhpStorm:

/**
 * @typedef {Object} input
 * @property {string} connectto 
 * @property {string} othervalue
 */
var input = inputObj.data();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多