ๆญค้ ้ข็”ฑ็คพ็พคๅพž่‹ฑๆ–‡็ฟป่ญฏ่€Œไพ†ใ€‚ไบ†่งฃๆ›ดๅคšไธฆๅŠ ๅ…ฅ MDN Web Docs ็คพ็พคใ€‚

View in English Always switch to English

TypeError: "x" is not a function

JavaScript ็š„ใ€Œis not a functionใ€ไพ‹ๅค–ๆœƒๅœจ่ฉฆๅœ–ๅฐ‡ไธ€ๅ€‹ๅ€ผ็•ถไฝœๅ‡ฝๅผๅ‘ผๅซ๏ผŒไฝ†่ฉฒๅ€ผๅฏฆ้š›ไธŠไธฆ้žๅ‡ฝๅผๆ™‚็™ผ็”Ÿใ€‚

่จŠๆฏ

TypeError: "x" is not a function.๏ผˆๅŸบๆ–ผ V8 & Firefox & Safari๏ผ‰

้Œฏ่ชค้กžๅž‹

TypeError

ๅ“ช่ฃกๅ‡บ้Œฏไบ†๏ผŸ

็จ‹ๅผ่ฉฆๅœ–ๅฐ‡ไธ€ๅ€‹ๅ€ผ็•ถไฝœๅ‡ฝๅผๅ‘ผๅซ๏ผŒไฝ†่ฉฒๅ€ผๅฏฆ้š›ไธŠไธฆ้žๅ‡ฝๅผใ€‚ๆœ‰ไบ›็จ‹ๅผ็ขผ้ ๆœŸไฝ ๆไพ›ไธ€ๅ€‹ๅ‡ฝๅผ๏ผŒไฝ†ไฝ ๆฒ’ๆœ‰้€™้บผๅšใ€‚

ๅ‡ฝๅผๅ็จฑๆ˜ฏไธๆ˜ฏๆœ‰ๆ‹ผๅญ—้Œฏ่ชค๏ผŸๆˆ–่€…ไฝ ๅ‘ผๅซๆ–นๆณ•็š„็‰ฉไปถไธŠๆฒ’ๆœ‰้€™ๅ€‹ๅ‡ฝๅผ๏ผŸไพ‹ๅฆ‚๏ผŒJavaScript ็š„ Object ๆฒ’ๆœ‰ map ๅ‡ฝๅผ๏ผŒไฝ† JavaScript ็š„ Array ็‰ฉไปถๆœ‰ใ€‚

ๆœ‰่จฑๅคšๅ…งๅปบๅ‡ฝๅผ้œ€่ฆไธ€ๅ€‹๏ผˆๅ›žๅ‘ผ๏ผ‰ๅ‡ฝๅผใ€‚ไฝ ๅฟ…้ ˆๆไพ›ไธ€ๅ€‹ๅ‡ฝๅผ๏ผŒๆ‰่ƒฝ่ฎ“้€™ไบ›ๆ–นๆณ•ๆญฃๅธธ้‹ไฝœ๏ผš

็ฏ„ไพ‹

ๅ‡ฝๅผๅ็จฑๆ‹ผๅญ—้Œฏ่ชค

้€™็จฎๆƒ…ๆณ็ถ“ๅธธ็™ผ็”Ÿ๏ผŒๅณๆ–นๆณ•ๅ็จฑๆœ‰ๆ‹ผๅญ—้Œฏ่ชค๏ผš

js
const x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function

ๆญฃ็ขบ็š„ๅ‡ฝๅผๅ็จฑๆ˜ฏ getElementById๏ผš

js
const x = document.getElementById("foo");

ๅœจ้Œฏ่ชค็š„็‰ฉไปถไธŠๅ‘ผๅซๅ‡ฝๅผ

ๅฐๆ–ผๆŸไบ›ๆ–นๆณ•๏ผŒไฝ ๅฟ…้ ˆๆไพ›ไธ€ๅ€‹๏ผˆๅ›žๅ‘ผ๏ผ‰ๅ‡ฝๅผ๏ผŒ่€Œไธ”ๅฎƒๅชๅฐ็‰นๅฎš็š„็‰ฉไปถๆœ‰ๆ•ˆใ€‚ๅœจ้€™ๅ€‹็ฏ„ไพ‹ไธญ๏ผŒๆˆ‘ๅ€‘ไฝฟ็”จไบ† Array.prototype.map()๏ผŒๅฎƒๅช้ฉ็”จๆ–ผ Array ็‰ฉไปถใ€‚

js
const obj = { a: 13, b: 37, c: 42 };

obj.map((num) => num * 2);

// TypeError: obj.map is not a function

ๆ”น็”จ้™ฃๅˆ—๏ผš

js
const numbers = [1, 4, 9];

numbers.map((num) => num * 2); // [2, 8, 18]

ๅ‡ฝๅผ่ˆ‡ๅทฒๅญ˜ๅœจ็š„ๅฑฌๆ€งๅŒๅ

ๆœ‰ๆ™‚ๅ€™ๅœจๅปบ็ซ‹้กžๅˆฅๆ™‚๏ผŒไฝ ๅฏ่ƒฝๆœƒ่ฎ“ไธ€ๅ€‹ๅฑฌๆ€งๅ’Œไธ€ๅ€‹ๅ‡ฝๅผไฝฟ็”จ็›ธๅŒ็š„ๅ็จฑใ€‚็•ถๅ‘ผๅซ่ฉฒๅ‡ฝๅผๆ™‚๏ผŒ็ทจ่ญฏๅ™จๆœƒ่ช็‚บ่ฉฒๅ‡ฝๅผไธๅญ˜ๅœจใ€‚

js
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"); // TypeError: myNewDog.name is not a function

ๆ”น็”จไธๅŒ็š„ๅฑฌๆ€งๅ็จฑ๏ผš

js
function Dog() {
  this.age = 11;
  this.color = "black";
  this.dogName = "Ralph"; // Using this.dogName instead of .name
  return this;
}

Dog.prototype.name = function (name) {
  this.dogName = name;
  return this;
};

const myNewDog = new Dog();
myNewDog.name("Cassidy"); // Dog { age: 11, color: 'black', dogName: 'Cassidy' }

ไฝฟ็”จๆ‹ฌ่™Ÿ้€ฒ่กŒไน˜ๆณ•้‹็ฎ—

ๅœจๆ•ธๅญธไธญ๏ผŒไฝ ๅฏไปฅๅฐ‡ 2 ร— (3 + 5) ๅฏซๆˆ 2*(3 + 5) ๆˆ–็›ดๆŽฅๅฏซๆˆ 2(3 + 5)ใ€‚

ไฝฟ็”จๅพŒ่€…ๆœƒๆ‹‹ๅ‡บ้Œฏ่ชค๏ผš

js
const sixteen = 2(3 + 5);
console.log(`2 x (3 + 5) is ${sixteen}`);
// Uncaught TypeError: 2 is not a function

ไฝ ๅฏไปฅ้€้ŽๅŠ ไธŠ * ้‹็ฎ—ๅญไพ†ไฟฎๆญฃ็จ‹ๅผ็ขผ๏ผš

js
const sixteen = 2 * (3 + 5);
console.log(`2 x (3 + 5) ๆ˜ฏ ${sixteen}`);
// 2 x (3 + 5) ๆ˜ฏ 16

ๆญฃ็ขบๅœฐๅผ•ๅ…ฅๅŒฏๅ‡บ็š„ๆจก็ต„

่ซ‹็ขบไฟไฝ ๆญฃ็ขบๅœฐๅผ•ๅ…ฅๆจก็ต„ใ€‚

ไธ€ๅ€‹ helpers ๅ‡ฝๅผๅบซ็ฏ„ไพ‹๏ผˆhelpers.js๏ผ‰

js
function helpers() {}

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๏ผ‰๏ผš

js
import helpers from "./helpers";

ๅƒ่ฆ‹