• @gaael
    link
    972 months ago

    You’ll find an npm package to help you count up to 2.

    (I recently learned - maybe here - that the is-even package has over 170k weekly downloads)

    • @Drusenija
      link
      842 months ago

      What’s even wilder is if you look at the code of that package, all it does is include the is-odd package and then return !is-odd. And the is-odd package isn’t much better, it does some basic checks on the input and then returns n % 2 === 1.

      • @NotAViciousCyborg
        link
        292 months ago

        I thought I was missing something. JS is one of my main languages and I always just write the is-odd function myself since it’s like 10 characters. It boggles the mind that is-even has 176k weekly downloads

        • @[email protected]
          link
          fedilink
          202 months ago

          To be fair having a name can make things easier to read. I get that i % 2 == 0 is a common pattern and most programmers will quickly recognize what is happening. But isEven(i) is just that much easier to grok and leaves that brainpower to work on something else.

          But I would never import a package for it. I would just create a local helper for something this trivial.

          • @NotAViciousCyborg
            link
            112 months ago

            Exactly what I would do if I had to reuse it, especially now since I know that adding a package would actually add 2. It all just seems so…inefficient

            • @[email protected]
              link
              fedilink
              112 months ago

              Even if the code isn’t reused adding names to sub-expressions can be very valuable. Often times I introduce new functions or variables even if they are only used once so that I can give them a descriptive name which helps the reader more quickly understand what is happening.

              • @NotAViciousCyborg
                link
                32 months ago

                Yeah, I do that with pretty much every separate operation in c# since our solutions are pretty big. Most of my JS scripts are just done in ServiceNow which are separated and named appropriately.

        • @gaael
          link
          82 months ago

          Also there are 40-something packages depending on it, so I guess it gets pulled automatically when they are used.

        • @Aqarius
          link
          22 months ago

          If youre lazy/busy enough, doing basic checks on the input is enough boilerplate to package out.

      • @[email protected]
        link
        fedilink
        English
        12 months ago

        I’ve always looked at stuff like that as much more along the lines of performance art than anything else.

    • kamen
      link
      102 months ago

      This must be a “hold my beer” kind of joke and someone wanting to see how far they can take it.

  • udon
    link
    702 months ago
    1. it’s easy to make fun of
    2. it makes every other programming language look better in comparison
  • SGG
    link
    English
    662 months ago
    1. It runs in browsers
    2. If you hate your co-workers, then they will also feel your pain.
  • @[email protected]
    link
    fedilink
    602 months ago
    1. You can call it “Java” to enrage other programmers
    2. You can compare numbers against strings without wasting time converting them
    • @neclimdul
      link
      112 months ago

      Array(16).join(“wat” - 1) + " Batman!";

      • @[email protected]
        link
        fedilink
        5
        edit-2
        2 months ago

        JavaScript: :wide eyed and smiling: Sure why not! You’re the boss!

        Python: Sighing and downing half a bottle of Advil: Sure. Why not, you’re the boss.

    • @TrickDacy
      link
      72 months ago

      If you’re living in 2002 and not using the strict equality operator, that’s on you

      • @[email protected]
        link
        fedilink
        12 months ago

        But what if I don’t want strict comparison? What if my frontend contains a text field for a numeric input and I wanna manually check against each possible valid input value if (input_val == 1) {...} else if (input_val == 2) {...} else if... without having to convert it first or check that it’s actually a number or fix my frontend?

        (I’m sure there are valid use cases for non-strict comparison, I just can’t think of one right now)

        • @[email protected]
          link
          fedilink
          4
          edit-2
          2 months ago

          why wouldn’t you just convert inline? (Number(input_val) === 2)

          Converting would mean you could use a switch statement with your example rather than an if else ladder

          switch(Number(input_val)) {
            case 1:
              doTheFirstThing();
            break;
            case 2:
              doTheSecondThing();
            break;
            case 3:
              doTheThirdThing();
            break;
          }
          
          • @[email protected]
            link
            fedilink
            -1
            edit-2
            2 months ago

            If you’re looking for good code, you missed the point of my comment 😄

            If I was looking for an enumeration of valid inputs, I’d make it a selection box rather than a text field that’s supposed to contain a number and give the selections reasonable names. If I want an integral quantity, I’d use a number input field.

            If I have no control over the frontend, that means I’m writing a backend in JS for a bullshit frontend, and no amount of good coding practice is going to salvage this mess.

            I’m also blessedly far away from WebDev now. I work in Data Analytics and if I ever have to do any of this for a living, something has gone very wrong.

            Converting texts into numbers or dates still haunts me though - fuck text inputs for numbers and dates.

      • @[email protected]
        link
        fedilink
        -82 months ago

        If you are understood buy you’re audience, you have spoken correctly. Correcting someone’s grammer is pointless

        • @roguetrick
          link
          52 months ago

          I dunno what correcting someone’s grammar has to do with paying off your readers. Sounds expensive.

        • @[email protected]
          link
          fedilink
          3
          edit-2
          2 months ago

          This isn’t speaking, but writing (or typing). Using ‘correct’ spelling & grammar helps ESL speakers read the language as well as those relying on text translation software. Some folks make typos & it’s fine to make mistakes but it’s also strange to act like it’s just as easy to understand. Apostrophes have a specific meaning & many folks rely on them for understanding.

          I’m learning a foreign language now & I can tell you it is a massive stumbling block when you run into what you think is a new word, but is ‘just’ a misspelling.

          My issue with this account is not its corrections, but if you want to be the correction bot, at least get the typography right too. ' is as ASCII holdover & it should be .

    • @[email protected]
      link
      fedilink
      182 months ago

      PHP has gotten really good over the past few versions, actually. Lots of really great stuff has been added, it feels like it resembles rust more every release lol

      • CarrotsHaveEars
        link
        fedilink
        12 months ago

        PHP10: We now allow interop with Rust!

        PHP11: We now allow writing code directly in a .php file and compile it with rustc.

    • @Klear
      link
      32 months ago

      It’s not Malboge.

  • @BeefPiano
    link
    English
    572 months ago
    1. It has the simplest multi-threaded implementation: no threads!
    2. You can goof off while your build system takes 20 minutes to rebuild a non-compiled language
  • @Skullgrid
    link
    412 months ago

    I am forced to try to get a JS certification.

    I am reaching the end of my rope, and starting to think of maybe putting my neck into one.

    Isaac Newton said that we see far because we stand on the shoulders of giants.

    Javascript is like standing on the shoulders of dwarves with brittle bone disease.

  • @[email protected]
    link
    fedilink
    40
    edit-2
    2 months ago

    1 - Easiest way to run a script in your browser
    2 - Always finds its way if inputs are bad
    Nan - undefined

    • @Skullgrid
      link
      112 months ago

      NaN is of type number. because fuck me.

      • @joneskind
        link
        1
        edit-2
        2 months ago

        When my console throws a NaN I kinda think of it as an Halloween kid receiving a fruit instead of a candy. They won’t say “That’s a fruit”. They’ll say “That’s not a treat”.

        I’m personally pissed more often by a falsy 0.

        Did you know that early analog computers would literally explode when asked to divide by 0?

        Now computers just say “Hey stupid, that shit is not even a Number in a mathematical sense, but sure I’ll add one to it.” instead of “Why would you kill me like this?”

        You can’t really define Infinity as a number, yet it is part of their world.

        So typeof NaN === ‘number’ totally makes sense in that regard.

        If you ever worked with arrays of dates, don’t judge NaN too harshly.

        • @Skullgrid
          link
          12 months ago

          Falsy zero? What’s wrong with that, 1 is true and 0 is false. I thought that was standard logic?

          • @joneskind
            link
            12 months ago

            in javascript a property is truthy if it exists

            myThing.property = "some string"
            
            if (myThing.property) { // true
              // do something
            }
            

            It works with everything except of course for falsy values

            myThing.number = someNumberThatShouldNotBeEqualToZero
            
            if (myThing.number) {
              // do something very important with that number that should not be equal to zero
            }
            
            // This can fail at anytime without warning
            

            So you’ve got to be extra careful with that logic when you’re dealing with numbers.

            I am not saying it’s wrong though. I’m saying it’s often annoying.

            • @Skullgrid
              link
              12 months ago

              ah ok , I think I write this a bit more verbose when using other languages, instead of

              if(thing)
              {
                 stuff;
              }
              
              

              I do

              
              if(thing != null)
              {
                 stuff;
              }
              

              so checking for numbers being truthy & existing didn’t seem like an issue

              • @joneskind
                link
                1
                edit-2
                2 months ago

                In the case of a non-existing property, the value would be undefined rather than null.

                And while == and != exist in JavaScript, most linters will throw an error and require a === and !== instead as they should be avoided.

                null == undefined // true
                null === undefined // false
                

                Besides, null is a perfectly valid value for a property, just as 0. Working with API Platform, I couldn’t tell the number of times I used this kind of statement:

                if (property || property === null) {
                  // do some stuff
                }
                

                Probably just as much as

                if (property || property === 0) {
                  // do some stuff
                }
  • @vocornflakes
    link
    English
    382 months ago
    1. Ubiquitous; insane amount of libraries and probably some of the best documentation of any language
    2. JS lambda function syntax is nice
  • Destide
    link
    fedilink
    English
    322 months ago

    It leads to typescript

    You get surprises from npm

    • @ByteJunk
      link
      282 months ago

      I spent way too long today figuring out why my app was doing something that it’s NOT supposed to do on weekends.

      I read Luxon’s docs (pretty cool lib tbh) again and again, and tried everything I could think of to get isWeekend to return a sane result.

      Turns out I was pulling a somewhat older version of Luxon, where isWeekend didn’t exist. In any sane language, I expect I’d get a huge warning about a property that doesn’t exist, but alas…

      Typescript helps me keep my sanity, but juuuuust barely.

      • @mynameisigglepiggle
        link
        20
        edit-2
        2 months ago

        If isWeekend doesn’t exist, then the weekend doesn’t exist, so it’s naturally false.

        That’s why JavaScript gets pushed so hard - it’s part of the capitalist agenda to keep us working 7 days a week

      • kamen
        link
        52 months ago

        Weren’t you getting runtime errors for the function not being found?

          • @[email protected]
            link
            fedilink
            1
            edit-2
            2 months ago

            Falsy* because it was undefined

            However, their IDE should have highlighted it as an unknown property. Guess this guy is coding in notepad or vi.

            • @[email protected]
              link
              fedilink
              22 months ago

              Yep, thanks for correcting me. In fact, if they write something like

              if (day.isWeekend) {...}
              

              The block will never be executed with the old version of library

              • @[email protected]
                link
                fedilink
                22 months ago

                Yeah that’s exactly what I think happened to him. He needs a better IDE and/or needs to stop copy/pasting code from stackoverflow or documentation that doesn’t match his library version.

                • @ByteJunk
                  link
                  02 months ago

                  My dude, you need to understand that all that anger and resentment, it is not you. It’s the years of JavaScript poisoning your mind.

                  In any case, that goes to my point. I would have to be saved by my IDE, when any sane language will blow up in your face as soon as you try to run it.

          • @ByteJunk
            link
            22 months ago

            It is. It also happens to be undefined, and checking that for truth is how I was bitten.

    • THCDenton
      link
      252 months ago

      You get suprises from npm

  • @[email protected]
    link
    fedilink
    212 months ago
    1. Is available to be used in website scripting.
    2. Not quite as full of footguns as PHP (although it is close).