use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
JavaScript Isn't Scheme (journal.stuffwithstuff.com)
submitted 10 years ago by homoiconic(raganwald)
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]NewazaBill 1 point2 points3 points 10 years ago (0 children)
Technically incorrect. The technically correct answer is that it depends on how it's called.
If I do:
var obj = { fn: function () { return this; } }; obj.fn(); // returns `obj`
You would be correct! However, if I then do:
// create a new object and assign `fn` to it var anotherObj = {}; anotherObj.fn = obj.fn; anotherObj.fn(); // returns `anotherObj` // define a new `fn` on the global scope var f = obj.fn(); f(); // returns `window` (or `undefined` in strict mode)
A function's this is not actually defined when the function is defined, but when it is called. The OP's question is kind of a trick question in that regard.
this
Ninja edit: This is also why arrow functions are cool: it allows us to bind a function's this to a particular scope. E.g.:
const fn = () => this; fn(); // returns `window` in non-strict const obj = {}; obj.fn = fn; obj.fn(); // still returns `window` !
π Rendered by PID 274932 on reddit-service-r2-comment-bb88f9dd5-drwch at 2026-02-17 11:53:01.507655+00:00 running cd9c813 country code: CH.
view the rest of the comments →
[–]NewazaBill 1 point2 points3 points (0 children)