Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ===============================
- // JavaScript Hall of Shame 🤡 από το ChatGPT
- // ===============================
- // 1. String + Number = string (γιατί έτσι)
- "5" + 1; // "51" -> string concatenation
- "5" - 1; // 4 -> numeric coercion
- // 2. Floating point madness (IEEE-754)
- 0.1 + 0.2; // 0.30000000000000004
- // 3. NaN: Not a Number (αλλά typeof number)
- NaN === NaN; // false -> NaN δεν ισούται με τον εαυτό του
- typeof NaN; // "number"
- // 4. Άδειες δομές που κάνουν μαγεία
- [] + []; // "" -> empty string
- [] + {}; // "[object Object]"
- {} + []; // 0 -> parsing + coercion (global scope)
- // 5. Loose equality (ΜΗΝ ΤΟ ΧΡΗΣΙΜΟΠΟΙΕΙΣ)
- false == 0; // true
- false == ""; // true
- 0 == ""; // true
- false === 0; // false -> strict equality (σωστό)
- // 6. null vs undefined
- null == undefined; // true
- null === undefined;// false
- typeof null; // "object" <- legacy bug 🤡
- // 7. Arrays και truthiness
- typeof []; // "object"
- [] == false; // true
- [] == ![]; // true <- WTF moment
- // 8. Reference equality
- {} === {}; // false
- [] === []; // false
- // 9. this: το απόλυτο χάος
- const obj = {
- x: 42,
- getX() {
- return this.x;
- }
- };
- obj.getX(); // 42
- const f = obj.getX;
- f(); // undefined (ή error σε strict mode)
- // 10. Arrow functions αλλάζουν το this
- const obj2 = {
- x: 42,
- getX: () => this.x
- };
- obj2.getX(); // undefined -> arrow δεν έχει own this
- // 11. Automatic Semicolon Insertion ☠️
- function returnsObject() {
- return
- {
- ok: true
- };
- }
- returnsObject(); // undefined (όχι object)
- // 12. parseInt παγίδα
- parseInt("08"); // 8 (παλιά: 0 λόγω octal)
- parseInt("10", 2); // 2 (binary parsing)
- // 13. Default values gone wrong
- function withDefault(x) {
- x = x || 10;
- return x;
- }
- withDefault(0); // 10 🤯
- withDefault(null); // 10
- withDefault(undefined);// 10
- // 14. typeof classes
- typeof class A {}; // "function"
- // 15. Functions είναι objects
- typeof function() {}; // "function"
- // 16. + operator κάνει ό,τι θέλει
- true + true; // 2
- true + false; // 1
- false + false; // 0
- // 17. Boolean coercion madness
- !!"false"; // true
- !!0; // false
- !![]; // true
- // 18. Equality chain disaster
- 0 == "0"; // true
- 0 == []; // true
- "0" == []; // false
- // 19. delete συμπεριφέρεται αλλοπρόσαλλα
- const arr = [1, 2, 3];
- delete arr[1];
- arr; // [1, <empty>, 3]
- arr.length; // 3
- // 20. Math που δεν είναι math
- Math.max(); // -Infinity
- Math.min(); // Infinity
- // 21. Object keys πάντα strings
- const o = {};
- o[1] = "one";
- o["1"]; // "one"
- // 22. for...in σε arrays (μην το κάνεις)
- for (let i in [10, 20, 30]) {
- i; // "0", "1", "2" (strings!)
- }
- // 23. Implicit globals (χωρίς strict)
- function leak() {
- x = 10;
- }
- leak();
- x; // 10 (global pollution)
- // 24. JSON δεν υποστηρίζει undefined
- JSON.stringify({ a: undefined }); // "{}"
- // 25. BONUS – Το απόλυτο WTF
- [] == []; // false
- [] == ![]; // true
Advertisement