Where is a mistake? Console says «Uncaught TypeError: data is not a function«
data = '';
x = 0;
$('._post .post .page_block .all .own').each(function(){
if(x < 5){
data += 'postid'+i+'='+$('.page_block',
this).text().replace(/^s+|s+$/gm,'')+'&';
}
x++;
});
Thank you!
- javascript
asked Aug 11, 2017 at 12:18
3
-
I don’t think that code you posted can cause that error.
Aug 11, 2017 at 12:20
-
@Pointy checked x20 time, problem caused by variable duplicating.
Aug 11, 2017 at 12:23
-
Where is i variable defined?
Aug 11, 2017 at 12:23
Load 7 more related questions
Show fewer related questions
TypeError:»x» не является функцией
Исключение JavaScript «не является функцией» возникает,когда была попытка вызвать значение из функции,но на самом деле значение не является функцией.
Message
TypeError: "x" is not a function. (V8-based & Firefox & Safari)
Error type
Что пошло не так?
Она пыталась вызвать значение из функции,но на самом деле значение не является функцией.Какой-то код ожидает,что вы предоставите функцию,но этого не произошло.
Может, в названии функции опечатка? Может быть, объект, для которого вы вызываете метод, не имеет этой функции? Например, у Objects JavaScript нет функции map , но у объекта Array JavaScript есть.
Существует множество встроенных функций,нуждающихся в функции (обратного вызова).Чтобы эти методы работали должным образом,вам необходимо предоставить функцию:
- При работе с объектами
ArrayилиTypedArray:-
Array.prototype.every(),Array.prototype.some(),Array.prototype.forEach(),Array.prototype.map(),Array.prototype.filter(),Array.prototype.reduce(),Array.prototype.reduceRight(),Array.prototype.find()
-
- При работе с объектами
MapиSet:-
Map.prototype.forEach()иSet.prototype.forEach()
-
Examples
Ошибка в названии функции
В этом случае,что случается слишком часто,в названии метода присутствует опечатка:
const x = document.getElementByID('foo');
Правильное имя функции — getElementById :
const x = document.getElementById('foo');
Функция вызвана не на том объекте
Для определенных методов вы должны предоставить функцию (обратного вызова), и она будет работать только с определенными объектами. В этом примере используется Array.prototype.map() , который работает только с объектами Array .
const obj = { a: 13, b: 37, c: 42 }; obj.map(function (num) { return num * 2; });
Вместо этого используйте массив:
const numbers = [1, 4, 9]; numbers.map(function (num) { return num * 2; });
Функция разделяет имя с ранее существовавшей собственностью
Иногда при создании класса может быть свойство и функция с тем же именем.При вызове функции компилятор думает,что функция перестает существовать.
function Dog() {
this.age = 11;
this.color = "black";
this.name = "Ralph";
return this;
}
Dog.prototype.name = function (name) {
this.name = name;
return this;
}
const myNewDog = new Dog();
myNewDog.name("Cassidy");
Вместо этого используйте другое имя свойства:
function Dog() {
this.age = 11;
this.color = "black";
this.dogName = "Ralph";
return this;
}
Dog.prototype.name = function (name) {
this.dogName = name;
return this;
}
const myNewDog = new Dog();
myNewDog.name("Cassidy");
Использование скобок для умножения
В математике 2 × (3+5)можно записать как 2*(3+5)или просто 2(3+5).
Использование последнего приведет к ошибке:
const sixteen = 2(3 + 5); console.log(`2 x (3 + 5) is ${sixteen}`);
Вы можете исправить код, добавив оператор * :
const sixteen = 2 * (3 + 5); console.log(`2 x (3 + 5) is ${sixteen}`);
Правильно импортируйте экспортированный модуль
Убедитесь,что вы правильно импортируете модуль.
Пример библиотеки помощников ( helpers.js )
const helpers = function () { }; helpers.groupBy = function (objectArray, property) { return objectArray.reduce((acc, obj) => { const key = obj[property]; acc[key] ??= []; acc[key].push(obj); return acc; }, {}); } export default helpers;
Правильное использование импорта ( App.js ):
import helpers from './helpers';
See also
- Functions
JavaScript
-
RangeError:аргумент не является корректной кодовой точкой
Исключение JavaScript «Недопустимая кодовая точка» возникает, когда значения NaN, отрицательные целые числа (-1), нецелые числа (5.4) или больше 0x10FFFF (1114111)
-
TypeError: «x» не является конструктором
Исключение JavaScript «не является конструктором» возникает, когда была попытка использовать объектную переменную, но была попытка использовать объект или переменную
-
ReferenceError: «x» не определен
Исключение JavaScript «переменная не определена» возникает, когда где-то есть несуществующая ссылка.
-
RangeError:точность вне досягаемости
Исключение JavaScript «точность вне допустимого диапазона» возникает, когда число, выходящее за пределы 0 и 20 (или 21), было передано в toFixed toPrecision.
Table of Contents
Hide
- What is TypeError: date.getDate is not a function error?
- How to fix TypeError: date.getDate is not a function error?
- Solution 1: Convert the value into a Date Object
- Solution 2 – Performing the type check
- Conclusion
If we call the method on the value that is not of a Date object, JavaScript will throw a TypeError: ()getDatedate. is not a function.getDate
In this tutorial, we will look at what is TypeErrror: date.getDate is not a function error and how to resolve them with examples.
Let us take a simple example to demonstrate this issue
// Declare and store the data into a variable
const date= Date.now();
// Prints the UNIX epoch
console.log(date);
// get the day of the week
const output = date.getDate();
Output
1655113057893
TypeError: date.getDate is not a function
In the above example, we have declared a variable and we have stored the UNIX epoch timestamp as the integer value into it. The Date.now() method returns the UNIX timestamp which is of type number.
In the next statement, we call the Date.prototype. method on the value of the type number, and hence we get a TypeError: date.getDate is not a function.()getDate
We can also check the variable type using typeof() to confirm the datatype.
// Declare and store the data into a variable
const currDate = Date.now();
// Prints the UNIX epoch
console.log(currDate);
console.log("The type of variable is",typeof currDate)
Output
1655113670272
The type of variable is number
How to fix TypeError: date.getDate is not a function error?
The method can only be used on the Date object and not on any other object type. Date.prototype.getDate()
There are two ways to fix this issue in JavaScript.
Solution 1: Convert the value into a Date Object
We can easily resolve the issue by converting the value into a Date object before calling the getDate() method.
If we know the value can be converted to a valid Date object, then we can use the Date() constructor in JavaScript that returns the Date object.
Let us take an example to resolve the issue using the constructor.Date()
// Declare and store the data into a variable
const currDate = Date.now();
// Prints the UNIX epoch
console.log("Unix time stamp of current date", currDate);
// Converts timestamp into Date Object
const dt = new Date(currDate)
// Print the day of the month
console.log(dt.getDate())
Output
Unix time stamp of current date 1655154305208
14
If the Date is invalid
If called with an invalid date string, or if the date to be constructed will have a UNIX timestamp less than -8,640,000,000,000,000 or greater than 8,640,000,000,000,000 milliseconds, it returns an Invalid Date and calling the getDate() method on this will return NaN (Not a Number).
// Declare and store the data into a variable
const currDate = "Hello World";
// Converts date like object into Date Object
const dt = new Date(currDate)
// Print the day of the month
console.log(dt.getDate())
Output
NaN
Solution 2 – Performing the type check
We can also perform a type check on the variable to check if it’s a valid date object and has it has the property of type getDate before calling the method.getDate()
There are 3 logical expression that we need to evaluate.
- First we need to check if the variable stores a value which of type object
- Once the first condition passes we need to check if the object is not
null - Last we need to ensure if the object contains getDate property.
Example – Type check using if/else
// Declare and store the data into a variable
const currDate = "2022/05/18 20:30:45";
// Converts date like object into Date Object
const dt = new Date(currDate)
if (typeof dt === 'object' && dt !== null && 'getDate' in dt) {
console.log("The data type is", typeof dt)
// Print the day of the month
console.log(dt.getDate())
}
else {
console.log("Invalid Date Object")
}
Output
The data type is object
18
Conclusion
The TypeError: date.getDate is not a function occurs if we call a getDate() method on the object that is not of type Date object. We can resolve the issue by converting the value into Date Object using Date() constructor before calling the getDate() method or by performing a type check using typeof to see if the object is of type getDate.
Related Tags
- Date(),
- getDate(),
- TypeError,
- typeof
Sign Up for Our Newsletters
Get notified on the latest articles
By checking this box, you confirm that you have read and are agreeing to our terms of use regarding the storage of the data submitted through this form.
Время на прочтение
5 мин
Количество просмотров 398K
JavaScript может быть кошмаром при отладке: некоторые ошибки, которые он выдает, могут быть очень трудны для понимания с первого взгляда, и выдаваемые номера строк также не всегда полезны. Разве не было бы полезно иметь список, глядя на который, можно понять смысл ошибок и как исправить их? Вот он!
Ниже представлен список странных ошибок в JavaScript. Разные браузеры могут выдавать разные сообщения об одинаковых ошибках, поэтому приведено несколько примеров там, где возможно.
Как читать ошибки?
Перед самим списком, давайте быстро взглянем на структуру сообщения об ошибке. Понимание структуры помогает понимать ошибки, и вы получите меньше проблем, если наткнетесь на ошибки, не представленные в этом списке.
Типичная ошибка из Chrome выглядит так:
Uncaught TypeError: undefined is not a function
Структура ошибки следующая:
- Uncaught TypeError: эта часть сообщения обычно не особо полезна.
Uncaughtзначит, что ошибка не была перехвачена вcatch, аTypeError— это название ошибки. - undefined is not a function: это та самая часть про ошибку. В случае с сообщениями об ошибках, читать их нужно прямо буквально. Например, в этом случае, она значит то, что код попытался использовать значение
undefinedкак функцию.
Другие webkit-браузеры, такие как Safari, выдают ошибки примерно в таком же формате, как и Chrome. Ошибки из Firefox похожи, но не всегда включают в себя первую часть, и последние версии Internet Explorer также выдают более простые ошибки, но в этом случае проще — не всегда значит лучше.
Теперь к самим ошибкам.
Uncaught TypeError: undefined is not a function
Связанные ошибки: number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected
Возникает при попытке вызова значения как функции, когда значение функцией не является. Например:
var foo = undefined;
foo();
Эта ошибка обычно возникает, если вы пытаетесь вызвать функцию для объекта, но опечатались в названии.
var x = document.getElementByID('foo');
Несуществующие свойства объекта по-умолчанию имеют значение undefined, что приводит к этой ошибке.
Другие вариации, такие как “number is not a function” возникают при попытке вызвать число, как будто оно является функцией.
Как исправить ошибку: убедитесь в корректности имени функции. Для этой ошибки, номер строки обычно указывает в правильное место.
Uncaught ReferenceError: Invalid left-hand side in assignment
Связанные ошибки: Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’
Вызвано попыткой присвоить значение тому, чему невозможно присвоить значение.
Наиболее частый пример этой ошибки — это условие в if:
if(doSomething() = 'somevalue')
В этом примере программист случайно использовал один знак равенства вместо двух. Выражение “left-hand side in assignment” относится к левой части знака равенства, а, как можно видеть в данном примере, левая часть содержит что-то, чему нельзя присвоить значение, что и приводит к ошибке.
Как исправить ошибку: убедитесь, что вы не пытаетесь присвоить значение результату функции или ключевому слову this.
Uncaught TypeError: Converting circular structure to JSON
Связанные ошибки: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported
Всегда вызвано циклической ссылкой в объекте, которая потом передается в JSON.stringify.
var a = { };
var b = { a: a };
a.b = b;
JSON.stringify(a);
Так как a и b в примере выше имеют ссылки друг на друга, результирующий объект не может быть приведен к JSON.
Как исправить ошибку: удалите циклические ссылки, как в примере выше, из всех объектов, которые вы хотите сконвертировать в JSON.
Unexpected token ;
Связанные ошибки: Expected ), missing ) after argument list
Интерпретатор JavaScript что-то ожидал, но не обнаружил там этого. Обычно вызвано пропущенными фигурными, круглыми или квадратными скобками.
Токен в данной ошибке может быть разным — может быть написано “Unexpected token ]”, “Expected {” или что-то еще.
Как исправить ошибку: иногда номер строки не указывает на правильное местоположение, что затрудняет исправление ошибки.
Ошибка с [ ] { } ( ) обычно вызвано несовпадающей парой. Проверьте, все ли ваши скобки имеют закрывающую пару. В этом случае, номер строки обычно указывает на что-то другое, а не на проблемный символ.
Unexpected / связано с регулярными выражениями. Номер строки для данного случая обычно правильный.
Unexpected; обычно вызвано символом; внутри литерала объекта или массива, или списка аргументов вызова функции. Номер строки обычно также будет верным для данного случая.
Uncaught SyntaxError: Unexpected token ILLEGAL
Связанные ошибки: Unterminated String Literal, Invalid Line Terminator
В строковом литерале пропущена закрывающая кавычка.
Как исправить ошибку: убедитесь, что все строки имеют правильные закрывающие кавычки.
Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined
Связанные ошибки: TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference
Попытка прочитать null или undefined так, как будто это объект. Например:
var someVal = null;
console.log(someVal.foo);
Как исправить ошибку: обычно вызвано опечатками. Проверьте, все ли переменные, использованные рядом со строкой, указывающей на ошибку, правильно названы.
Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined
Связанные ошибки: TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference
Попытка записать null или undefined так, как будто это объект. Например:
var someVal = null;
someVal.foo = 1;
Как исправить ошибку: это тоже обычно вызвано ошибками. Проверьте имена переменных рядом со строкой, указывающей на ошибку.
Uncaught RangeError: Maximum call stack size exceeded
Связанные ошибки: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow
Обычно вызвано неправильно программной логикой, что приводит к бесконечному вызову рекурсивной функции.
Как исправить ошибку: проверьте рекурсивные функции на ошибки, которые могут вынудить их делать рекурсивные вызовы вечно.
Uncaught URIError: URI malformed
Связанные ошибки: URIError: malformed URI sequence
Вызвано некорректным вызовом decodeURIComponent.
Как исправить ошибку: убедитесь, что вызовы decodeURIComponent на строке ошибки получают корректные входные данные.
XMLHttpRequest cannot load some/url. No ‘Access-Control-Allow-Origin’ header is present on the requested resource
Связанные ошибки: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some/url
Эта проблема всегда связана с использованием XMLHttpRequest.
Как исправить ошибку: убедитесь в корректности запрашиваемого URL и в том, что он удовлетворяет same-origin policy. Хороший способ найти проблемный код — посмотреть на URL в сообщении ошибки и найти его в своём коде.
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
Связанные ошибки: InvalidStateError, DOMException code 11
Означает то, что код вызвал функцию, которую нельзя было вызывать в текущем состоянии. Обычно связано c XMLHttpRequest при попытке вызвать на нём функции до его готовности.
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Some-Header', 'val');
В данном случае вы получите ошибку потому, что функция setRequestHeader может быть вызвана только после вызова xhr.open.
Как исправить ошибку: посмотрите на код в строке, указывающей на ошибку, и убедитесь, что он вызывается в правильный момент или добавляет нужные вызовы до этого (как с xhr.open).
Заключение
JavaScript содержит в себе одни из самых бесполезных ошибок, которые я когда-либо видел, за исключением печально известной Expected T_PAAMAYIM_NEKUDOTAYIM в PHP. Большая ознакомленность с ошибками привносит больше ясности. Современные браузеры тоже помогают, так как больше не выдают абсолютно бесполезные ошибки, как это было раньше.
Какие самые непонятные ошибки вы встречали? Делитесь своими наблюдениями в комментариях.
P.S. Этот перевод можно улучшить, отправив PR здесь.

Sometimes, we want to fix Uncaught TypeError: data.push is not a function with JavaScript.
In this article, we’ll look at how to fix Uncaught TypeError: data.push is not a function with JavaScript.
How to fix Uncaught TypeError: data.push is not a function with JavaScript?
To fix Uncaught TypeError: data.push is not a function with JavaScript, we should make sure data is an array.
For instance, we write
const data = [
{
name: "ananta",
age: "15",
country: "Atlanta",
},
];
data.push({ name: "Tony Montana", age: "99" });
data.push({ country: "IN" });
to declare the data array.
And then we call data.push to append new entries into data.
Conclusion
To fix Uncaught TypeError: data.push is not a function with JavaScript, we should make sure data is an array.
Web developer specializing in React, Vue, and front end development.
View Archive
