Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
if (myArray[3] != undefined)
<script>
var myArray = [];
if (myArray[3] != undefined) {
alert('1: true');
}
var undefined = true;
if (myArray[3] != undefined) {
alert('2: true');
}
</script>
<script>
var myArray = [];
if (typeof myArray[3] != 'undefined') {
alert('1: true');
}
var undefined = true;
if (typeof myArray[3] != 'undefined') {
alert('2: true');
}
</script>
(function($, undefined) {
})(jQuery);
Как следствие первого, при обращении к undefined не происходит поиска по глобальному контексту, что есть вери-гуд.
при 'undefined' вообще никакого поиска не происходит.
Что и рекомендуется делать всем при возможности.
console.time('test');
for(var i=0;i<10000000;++i)
if(window['clearTimeout']);
console.timeEnd('test');
console.time('test');
for(var i=0;i<10000000;++i)
if('setTimeout' in window);
console.timeEnd('test');
console.time('test');
for(var i=0;i<100000;++i)
if(window['test'] );
console.timeEnd('test');
console.time('test');
for(var i=0;i<100000;++i)
if('test' in window && window['test']);
console.timeEnd('test');
if(object['param']) или if(object.param)if(typeof object.param != 'ненужный тип')
или
if(typeof object.param == 'нужный тип')
так доступнее объяснил?console.time('test');
for(var i=0;i<100000;++i) if(window['setTimeout']); console.timeEnd('test');
console.time('test');
for(var i=0;i<100000;++i) if('setTimeout' in window); console.timeEnd('test');
console.time('test');
for(var i=0;i<100000;++i) if('undefined' == typeof window['setTimeout']); console.timeEnd('test');
var obj = { test: 1 }
console.time('obj.param');
for(var i=0;i<10000000;++i)
if(obj['test']);
console.timeEnd('obj.param');
console.time('typeof obj.param == «number»');
for(var i=0;i<10000000;++i)
if(typeof obj['test'] == 'number');
console.timeEnd('typeof obj.param == «number»');
console.time('«test» in obj');
for(var i=0;i<10000000;++i)
if('test' in obj);
console.timeEnd('«test» in obj');
for (x in [1,2,3]){
}
for(var i in obj) if(obj.hasOwnProperty(i)) {
// some work
}
if (fn.call(...) === false) return;
[1,2,3].forEach(function(element, index) {
if (index === 2) return false;
});
Проверка существования свойств и методов объекта в Javascript