I’m trying to find a way to programatically get the last value returned by the Javascript interpreter. Ruby’s interpreter, to name an example, has the “_”:
1 + 2 #=> 3
_ #=> 3
I would like to know if the same thing exists in Javascript.
EDIT:
Another way to maybe achieve this. Is there any syntax that supports the continuation of an expression in a newline? Something like this:
var a = \&
1 + 2;
a #=> 3
Some sort of combination of characters that tell the interpreter the expression continues in a newline (like the + for string concatenation).
PURPOSE:
Purpose of this research is to find if I can load a JSON data structure using a script tag and successfully assign it from outside of its scope, something like this:
<script> var json_struct = </script>
<script src="http://domain.com/myjsonfile.json" type='application/json' ></script>
which, by the way, doesn’t work. Surprisingly 🙂
There is no construct in browser based javascript that can do this.
The reason is that browsers, since the earliest Netscape days, have always initiated the script compiler upon the closing of the script tag. Regardless if it’s javascript, VBscript (IE only) or Tcl (with the appropriate plugin).
Which means that any statement that is incomplete will simply be treated as a syntax error. Each
<script>tag is basically treated as a single file.What you’re trying to do is similar to this in Ruby:
which I don’t think works in Ruby.
However, in non-browser environments that support modules like Node.js, the method that imports module does in fact return a value (usually an object). So you can do something like this in node.js:
Unfortunately, the
requirefunction only works on local files. But Node.js is open source so you can always fork it and modifyrequireto be able to source fromhttp://like PHP.Alas, if what you’re trying to do is browser scripting then the above point is moot.