这让我感到惊讶:怪异array.length替代语法
var parts = email.split('@');
if (parts < 2) {
参考:https://github.com/Kicksend/mailcheck/blob/master/src/jquery.mailcheck.js#L21-22
本质上来说,它看起来像:
var a = [null, null, null]
a < 2 // false
var b = [null]
b < 2 // true
所以它看起来像它的工作原理,但我想要知道为什么,实际上发生了什么强制呢?因为这里的意图是要保释,如果少于2个部分来自电子邮件字符串,我会期望它总是通过,因为数组定义为truthy - 它应该创建一个数组,至少有一个成员甚至在一个空字符串。
我总是喜欢用array.length
。是以上安全吗?
好吧,'array.length'并不总是安全的,或者考虑到它不会总是重新调整时删除一个元素;) – 2012-03-21 21:59:50
@JeffreySweeney - '.length'总是表示数组的实际长度。如果一个元素被'.splice()'或'.pop()'移除,那么'.length'将立即可靠地返回新的长度。如果仅仅将数组元素设置为undefined,则该数组元素仍然存在,并且所有其他数组元素保留在相同的位置,因此'.length'值正确不会更改。你能否描述一下当你认为'.length'不准确时。 – jfriend00 2012-03-21 22:18:30
感谢您的回复,完成完整性检查,问题提交,我不会疯狂...... – 2012-03-21 22:22:44