|
|
1
402
首先,
从未
使用A
这背后的原因如下:javascript中的每个对象都有一个特殊的字段,名为
这是扩展对象和添加新方法的标准方法。很多图书馆都这样做。
不过,让我们看看
你看到了吗?它突然认为过滤器_0是另一个数组索引。当然,它不是真正的数字索引,但是
幸运的是,所有对象都有一个
注意,尽管此代码在数组中按预期工作,但您不应该,
从未
,使用
|
|
|
2
85
JSlint的作者道格拉斯·克罗克福德(DouglasCrockford)曾多次就这个问题撰文(并发表过意见)。有一部分在 this 他的网站页面包括:
克罗克福德也有一个关于尤伊剧院的视频系列,他在那里谈论这个。Crockford的一系列关于javascript的视频/讨论是一个必须要看你是否对javascript有点认真。 |
|
|
3
16
错误:(JShint将引发错误)
好:
|
|
|
4
9
瓦瓦的回答是正确的。如果使用jquery,则
|
|
|
5
7
@所有-javascript中的所有内容都是一个对象(),所以类似“只在对象上使用”这样的语句有点误导性。另外,javascript不是强类型的,所以1==“1”是正确的(尽管1==“1”不是,但crockford在这方面很重要)。当涉及到JS中数组的编程概念时,输入在定义中很重要。 @Brenton-无需成为术语独裁者;“关联数组”、“字典”、“哈希”、“对象”,这些编程概念都适用于JS中的一个结构。它是名称(键、索引)值对,其中值可以是任何其他对象(字符串也是对象)。
所以,
创建一个数组结构,该数组的限制是所有索引(aka键)必须是整数。它还允许通过.push()自动分配新索引
确实是通过
但如何:
试试这个:
也许不是数组的最佳用法,但只是说明事情并不总是明晰的。 如果您知道您的键,而且它们不是整数,那么您唯一的类似数组的结构选项就是对象。
|
|
|
6
2
说起来肯定有点极端
? 值得一提的是道格拉斯·克罗克福德摘录中的部分。
如果您需要一个关联数组(又名hashtable/dictionary),其中键是命名的,而不是数字索引的,那么您必须将其作为一个对象来实现,例如。
在这种情况下
无论如何,还要感谢对jslint错误消息的解释,我将在通过无数关联数组进行交互时立即使用“isownproperty”检查! |
|
|
7
0
这意味着您应该使用 hasOwnProperty method . |
|
|
8
0
为了增加for in/for/$的主题,我添加了一个jspef测试用例,用于使用$.each vs for in: http://jsperf.com/each-vs-for-in/2 不同的浏览器/版本对它的处理方式不同,但似乎是$。每个和直接输入都是性能方面最便宜的选项。 如果使用for-in迭代关联数组/对象,知道要搜索的是什么,而忽略了其他所有内容,请使用$。如果使用jquery,则每个都要使用,或者只使用for-in(然后使用break;一旦达到所知道的应该是最后一个元素) 如果您正在迭代一个数组以对其中的每个键对执行某些操作,那么如果不使用jquery,则应使用hasownproperty方法;如果确实使用jquery,则应使用$.each。
总是使用
|
|
|
Omar · 应为标识符,但看到的是“*”行7位置3 8 年前 |
|
|
shankar.siva · jslint应为“]”,而看到的是“/” 9 年前 |
|
|
theDmi · 为什么TSLint和JSLint报告空块? 10 年前 |
|
|
TimG · 在多个for循环中使用相同的变量名是不是一种糟糕的做法? 13 年前 |