Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSLint类型混淆:jQuery.css()中的函数和对象_Javascript_Jquery_Jslint - Fatal编程技术网

Javascript JSLint类型混淆:jQuery.css()中的函数和对象

Javascript JSLint类型混淆:jQuery.css()中的函数和对象,javascript,jquery,jslint,Javascript,Jquery,Jslint,我很难使用JSLint来验证这些行。我可能错误地认为它们实际上是有效的。以下是相关代码: var shadowBox = $('<div/>').appendTo($(document.body)); // ... shadowBox.css({ left: (e.originalEvent.clientX + 10).toString() + 'px', top: e.originalEvent.clientY.toString() + 'px' }); 我

我很难使用JSLint来验证这些行。我可能错误地认为它们实际上是有效的。以下是相关代码:

var shadowBox = $('<div/>').appendTo($(document.body));

// ...

shadowBox.css({
    left: (e.originalEvent.clientX + 10).toString() + 'px',
    top: e.originalEvent.clientY.toString() + 'px' 
});
我得到的验证错误有:

第492行的问题字符22:类型混淆:function和.css:object

shadowBox.css{

第494行的问题字符57:类型混淆:数字和“+”:字符串

顶部:e.originalEvent.clientY.toString+'px'

我更担心第一个问题,因为这是一种相当常见的jQuery语法。 第二个看起来像是假阳性,因为我将字符串与字符串连接起来

谢谢

编辑

解决了问题:

结果表明,JSLint对同一文档中存在的这两种语法模式不满意:

var $var = $('<div/>', {css: {width: '15px'}}); // ONE
$var.css({width : '20px'}); // TWO

关于第一个,shadowBox.css实际上是一个函数吗?您调用它的时候就好像它是一个函数一样。编辑:是的,因为它是一个常规的jQuery对象,所以您正确地使用了.css。/EDIT

关于第二个问题,我认为这是正确的,尽管你没有给出任何上下文


请注意,jslint不太理解有效的JS,我始终建议不要使用它。

关于第一个问题,shadowBox.css实际上是一个函数吗?您调用它的时候就好像它是一个函数一样。编辑:是的,因为它是一个常规的jQuery对象,所以您正确地使用了.css。/EDIT

关于第二个问题,我认为这是正确的,尽管你没有给出任何上下文

请注意,jslint不太理解有效的JS,我始终建议不要使用它。

来自: 类型混淆

JSLint可以进行类型推断。它可以报告用于容纳多个类型的变量和属性的情况。警告是类型混淆:{a}和{b}。其中{a}和{b}将替换为类型名称

通常很容易看出是什么导致了警告。在某些情况下,这可能非常令人费解。在令人费解的情况下,请尝试使用类型化值初始化变量。例如,如果您希望n包含数字,请编写

var n = 0;
这应该会产生更明确的警告

类型混淆不一定是一个错误,特别是在一个提供和类型一样多的类型自由的语言中,但是一些不一致是错误的,所以类型规则可能是要考虑添加到编程风格的。而且,最快的JavaScript引擎在类型混乱的情况下会减速。ese警告,打开“容忍类型混淆”

对于第二个错误,可以使用string.concate.originalEvent.clientY.toString“px”或忽略该错误。jslint是一个检测不良行为的工具,但远不是一个完美的工具

顺便说一句,有一个js验证器比jslint更好:。它没有crockford先生喜欢的规则,它有改进javascript的规则。

来自: 类型混淆

JSLint可以进行类型推断。它可以报告用于容纳多个类型的变量和属性的情况。警告是类型混淆:{a}和{b}。其中{a}和{b}将替换为类型名称

通常很容易看出是什么导致了警告。在某些情况下,这可能非常令人费解。在令人费解的情况下,请尝试使用类型化值初始化变量。例如,如果您希望n包含数字,请编写

var n = 0;
这应该会产生更明确的警告

类型混淆不一定是一个错误,特别是在一个提供和类型一样多的类型自由的语言中,但是一些不一致是错误的,所以类型规则可能是要考虑添加到编程风格的。而且,最快的JavaScript引擎在类型混乱的情况下会减速。ese警告,打开“容忍类型混淆”

对于第二个错误,可以使用string.concate.originalEvent.clientY.toString“px”或忽略该错误。jslint是一个检测不良行为的工具,但远不是一个完美的工具


顺便说一句,有一个js验证器比jslint更好:。它没有crockford先生喜欢的规则,它有更好的javascript规则。

结果是jslint增加了他们的类型混淆规则

而我认为类型混淆的定义纯粹是:

var a = 1;
var b = a + 'string';
克罗克福德先生也认为这是一种类型混淆,我并不特别同意他的观点

function MyObject () {
    this.top() {
        return '15px';
    }
}

var anonObject = {top: '15px'};
var myObject = new MyObject();
var testString = myObject.top();
或者是jQuery上下文中更简单的示例

var $b = $('<div/>').css({top: '15px'}),
    a = $b.offset().top + 15;
我的印象是,类型混淆仅指标识符在范围内改变值。尽管克劳福德先生似乎认为:

发件人:道格拉斯·克罗克福德

主题:Re:JSLint类型问题

致:安东尼S

日期:2011年6月23日星期四上午11:44

你似乎对什么类型的混淆感到困惑。如果你没有 如果您想查看警告,则不必查看


结果表明,JSLint增加了它们的类型混淆规则

而我认为类型混淆的定义纯粹是:

var a = 1;
var b = a + 'string';
克罗克福德先生也认为这是一种类型混淆,我并不特别同意他的观点

function MyObject () {
    this.top() {
        return '15px';
    }
}

var anonObject = {top: '15px'};
var myObject = new MyObject();
var testString = myObject.top();
或者是jQuery上下文中更简单的示例

var $b = $('<div/>').css({top: '15px'}),
    a = $b.offset().top + 15;
我的印象是类型混淆仅仅指标识符在范围内改变值。尽管克劳福德先生似乎认为:

发件人:道格拉斯·克罗克福德

主题:Re:JSLint类型问题

致:安东尼S

日期:2011年6月23日星期四上午11:44

你似乎对什么类型的混淆感到困惑。如果你不 如果您想查看警告,则不必查看


不理解有效js吗?嗯?JSLint是一个很棒的工具,不确定您认为它有什么bug,尽管如果有,您可能应该报告它们。像所有工具一样,您需要知道何时以及如何使用它,但对于简单的语法验证来说,它是非常显著的。shadowBox是一个jQuery对象,因此根据这一点:啊,我没有注意到您的第一个shadowBox与第二个shadowBox是相同的。是的,您正确地使用了.css。不理解有效的js吗?嗯?JSLint是一个很棒的工具,不确定您认为它有什么bug,尽管如果有,您可能应该报告它们。像所有工具一样,您需要知道何时以及如何使用它,但对于简单的语法验证来说,它是非常显著的。shadowBox是一个jQuery对象,因此根据这一点:啊,我没有注意到您的第一个shadowBox与第二个shadowBox是相同的。是的,你正确地使用了.css。当我以isAnthony的身份粘贴你的代码时,对我来说没有问题,你能为每个错误发布代码的整个上下文/范围吗。正如我所说的,正如他们所确认的那样,可能是更广泛的背景导致了问题。嗯。。。我想我会在另一个环境中寻找一些东西。@davin:我想我解决了这个问题。我是新的,所以我如何处理这个问题,因为有有用的信息下面贡献,但我有效地解决了我自己。但是如果你解决了问题,那么你自己发布答案并接受它。当我以isAnthony的身份粘贴你的代码时,对我来说没有问题,你能为每个错误发布代码的整个上下文/范围吗。正如我所说的,正如他们所确认的那样,可能是更广泛的背景导致了问题。嗯。。。我想我会在另一个环境中寻找一些东西。@davin:我想我解决了这个问题。我是新的,所以我如何处理这个问题,因为有有用的信息下面贡献,但我有效地解决了我自己。投票赞成的答案,考虑添加一个评论感谢的影响,有助于…,但如果你解决它,然后张贴自己的答案,并接受它。