gpt4 book ai didi

javascript - JSLint 类型混淆 : function and object with jQuery . css()

转载 作者:行者123 更新时间:2023-11-30 09:04:15 25 4
gpt4 key购买 nike

我很难使用 JSLint 验证这些行。我假设(可能不正确)它们实际上是有效的。相关代码如下:

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

// ...

shadowBox.css({
left: (e.originalEvent.clientX + 10).toString() + 'px',
top: e.originalEvent.clientY.toString() + 'px'
});

我收到的验证错误是:

Problem at line 492 character 22: Type confusion: function and .css: object.

shadowBox.css({

Problem at line 494 character 57: Type confusion: number and '+': string.

top: e.originalEvent.clientY.toString() + 'px'

第一个语法更让我困扰,因为这是一个相当常见的 jQuery 语法。第二个似乎是误报,因为我将字符串与字符串连接起来。

谢谢

编辑

解决问题:

原来 JSLint 对同一文档中存在的这两种语法模式不满意:

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

最佳答案

来自 jslint :类型混淆

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

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

var n = 0;

这应该会产生更清晰的警告。

类型混淆不一定是错误,尤其是在一种提供与该语言一样多的类型自由度的语言中。但是有些不一致是错误,因此类型规则可能是您需要考虑添加到您的编程风格中的东西。此外,最快的 JavaScript 引擎会在类型混淆的情况下变慢。要关闭这些警告,请打开容忍类型 混淆 option .

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

// ...

$(shadowBox).css({
left: String.concat(e.originalEvent.clientX + 10).toString(), 'px'),
top: String.concat(e.originalEvent.clientY.toString(), 'px')
});

对于第二个错误,您可以使用 string.concat(e.originalEvent.clientY.toString(), 'px') 或忽略该错误。 jslint 是一种检测不良做法的工具,但远非完美的工具。

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

关于javascript - JSLint 类型混淆 : function and object with jQuery . css(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com