这个表达式在JavaScript中意味着什么:if(special_validations中的$(element).at
What does this expression mean in JavaScript : if ($(element).attr('id') in special_validations)
我不懂关键字"in"。
它是一个有条件的构建器?
这是上下文:
if ($(element).attr('id') in special_validations)
{
var validation = special_validations[$(element).attr('id')]($(element).val());
if (validation == true && typeof validation == 'boolean')
$(element).parent().removeClass('has-error').addClass('has-success');
else
{
total_errors++;
$(element).parent().addClass('has-error').removeClass('has-success');
if (typeof validation == 'string')
$('<label class="control-label" for="'+$(element).attr('id')+'">'+validation+'</label>').insertAfter(element);
else
$('<label class="control-label" for="'+$(element).attr('id')+'">Formato no válido</label>').insertAfter(element);
}
}
in
关键字检查某个键是否在对象中。请注意,这会检查键,而不是值。
因此,您的示例检查元素的ID是否是special_validations
对象中的键。
in
a条件测试
in
表示其他东西内部的东西。因此,我们可以将其用作条件测试来检查是否有其他东西是in
。
在Object
中,我们可以检查其内部是否存在属性名:
var my_object = {first:'a',second:'b',third:'c',fourth:'d'}
console.log( 'first' in my_object ) // returns true
console.log( 'me' in my_object ) // returns false
在Array
中,我们可以检查其中是否存在密钥:
这个数组有五个键in
it。
var my_array = [ 'a' , 'b' , 'c' , 'd' , 'e' ]
每个元素稍后都可以用一个数字键引用,如下所示:
my_array[0] = 'a'
my_array[1] = 'b'
my_array[2] = 'c'
my_array[3] = 'd'
my_array[4] = 'e'
console.log( 0 in my_array ) // returns true
console.log( 1 in my_array ) // returns true
console.log( 2 in my_array ) // returns true
console.log( 3 in my_array ) // returns true
console.log( 4 in my_array ) // returns true
console.log( 5 in my_array ) // returns false
所以
in
算子指的是Object
的条件包含某个属性名称。
in
循环使用数字键的数组
假设您有一个数组,如下所示:
var my_array = [ 'a' , 'b' , 'c' , 'd' , 'e' ]
您可以使用for循环来遍历以下各项:
for(var key=0; key<my_array.length; key++){
var this_element = my_array[key]
}
但您也可以使用in
操作符来完成此操作:
for(var key in my_array){
var this_element = my_array[key]
}
因此,
in
操作符引用Array
内部的每个键。
in
循环使用非数字键的对象
in
运算符通常通过JavaScript中的Object
属性名称与for
循环一起使用。
这对于具有属性的Objects
特别有用,这些属性在某种程度上被视为Array
值。
很多时候,您不确定对象中存在多少属性,甚至不确定属性名称是什么。
例如,这是一个典型的对象:
var my_object = {first:'a',second:'b',third:'c',fourth:'d'}
每个属性都可以用其的属性名称引用,如下所示:
my_object['first'] = 'a'
my_object['second'] = 'b'
my_object['third'] = 'c'
my_object['fourth'] = 'd'
因此,在这里,我们看到属性不是用简单的整数定义的,比如Array
。因此,我们必须使用in
运算符引导我们遍历Object
属性。
Object
属性很少像JavaScript Arrays
那样具有数字键。因此无法执行传统的数字for
循环。
因此,与传统上定义具有明确数字边界的for
循环不同,您可以使用in
在不将任何明确边界包含在for
循环参数中的情况下编写以下内容,如下所示:
for(var element in my_array){}
因此,
in
运算符引用Object
的每个属性名。
in
与for
配合使用的危险
对象具有固有属性。
例如,Array
是Object
的一种类型,并且所有Arrays
在其对象原型中都具有length
属性。
只要定义一个空对象,它就会附带某些属性。使用in
的for
循环会迭代这些不需要的属性,""可能会破坏代码。
因此,即使在空的Array
:中
console.log( 'length' in new Array() ) // returns true
同样的原理可能会导致for
循环遍历不需要的属性,具体取决于您的web浏览器和版本。
- 使用jQuery访问Special行中的其他同级
- 如何将Special:PrefixIndex/FULLPAGENAME添加到本地MediaWIki安装的工具箱中
- jquery ajax get special characters (umlaute)
- CKFinder TypeError: t.event.special.swipe is undefined
- Rails Gem Client Side Validations html struct
- 在jquery中获取文本框ID的Special部分
- Jquery Validations不是函数
- 关闭覆盖,除非if "special"使用jQuery/Javascript单击Div
- Ember.js使用ember-cp-validations表单验证
- xmlhttprequest special send