Giter Site home page Giter Site logo

demo page can't handle {a:"b"} about jshint HOT 9 CLOSED

jshint avatar jshint commented on July 28, 2024
demo page can't handle {a:"b"}

from jshint.

Comments (9)

GarrettS avatar GarrettS commented on July 28, 2024

This bug is invalid.

An ExpressionStatement must not begin with either '{' or 'function ' because that would make it ambiguous with a Block or a FunctionDeclaration, respectively. Thus, {a : "b" } is not a valid Program.

from jshint.

valueof avatar valueof commented on July 28, 2024

To clarify further, expression in JavaScript can't start with { so whenever JSHint sees that it switches to JSON mode. And in JSON, all keys must be strings. So, if you'll try: { "a": "b" } the check will pass.

from jshint.

makc avatar makc commented on July 28, 2024

expression in JavaScript can't start with {

why does javascript:{a:"b"}; not present me same error message?

from jshint.

makc avatar makc commented on July 28, 2024

you can also try this html in your browser of choise:

<script>{a:alert("orly");}</script>

from jshint.

makc avatar makc commented on July 28, 2024

(github ate my script tags)

from jshint.

valueof avatar valueof commented on July 28, 2024

I'd assume they either eval it or run it in a closure with assumed return? I am not sure though. Does anybody actually use this in real-world projects? Does it work in all browsers?

from jshint.

makc avatar makc commented on July 28, 2024

I assume lots of people use it in var foo = { ... } kind of statements, but there's nothing to prevent you from using it without "var foo = " part; just like you could write 2 + 3; and it'd still be valid script.

from jshint.

GarrettS avatar GarrettS commented on July 28, 2024

The switching between JSON and ECMAScript happens automatically, I see.

Have you considered having this be explicit choice? The potential problem is when the user enters what he believes is JSON but in actuality it is not, but it is valid Ecmascript. For example:

[
  { a : "b" }
]

Not valid JSON but valid Ecmascript.

from jshint.

valueof avatar valueof commented on July 28, 2024

GarrettS, I agree. This switching was a part of JSLint, I am looking into making it explicit.

from jshint.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.