2010-02-17 1 views
4

Так ..типов данных и Javascript ... какой кошмар

Я передаю данные для функции, которая обрабатывает строки и число по-разному.

Я бы хотел, чтобы передать массив значений и определить, каковы типы каждого значения.

row[0] = 23; 
row[1] = "this is a string... look at it be a string!"; 
row[2] = true; 

$.each(row, function(){ 
    alert(typeof(this)); 
    //alerts object 
}); 

Можно ли определить «фактические» типы данных в данной строке?

ответ

5

Попробуйте

var row = [ 23, "this is a string", true ]; 

$.each(row, function (index,item) { 
    alert(typeof(item)); 
}); 

// Alerts "number", "string", "boolean" 

Всякий раз, когда это возможно, я стараюсь избегать использования «это» в обратных вызовов и используя явные аргументы, как правило, более четким и предсказуемым.

+0

мертвый сверху. спасибо ... –

+0

Добро пожаловать. Теперь я буду искать исходный код jQuery, чтобы узнать, почему ваша версия не работает ... – Rich

+7

'this' всегда является объектом. *Всегда*. Вот и все. –

3

@Rich предлагает наилучшее возможное решение - использовать значения, переданные для обратного вызова в качестве аргументов. Цитата jQuery doc:

Значение также может быть доступен через this ключевое слово, но Javascript всегда будет обернуть значение this как Object, даже если это просто строка или числовое значение.

this.valueOf() может помочь вам вернуться к первозданному значению. Но все же - в этом конкретном примере лучше использовать значения, переданные как аргументы функции.

Смежные вопросы