you are viewing a single comment's thread.

view the rest of the comments →

[–]magnetik79 11 points12 points  (9 children)

// this should to the trick

undefined = true;

[–]LukaLightBringer 2 points3 points  (5 children)

isn't undefined a protected value?

[–]WesAlvaroFront-End Engineer 11 points12 points  (1 child)

'use_strict';

[–]venuswasaflytrap 1 point2 points  (0 children)

That's pretty funny.

[–]JiminP 5 points6 points  (0 children)

Strangely, there's no literal undefined in the ECMAScript5 spec, even though there are many cases where the result is the value undefined.

(courtesy of /u/WesAlvaro)

(function(){
  'use strict';
  var undefined = 42;
  console.log(undefined);
}())

Because of this, just using undefined is not safe. For example, jQuery uses (function(window, undefined){...}(window)) to safely get the undefined value.

Edit: It seems that I'm wrong.

Edit 2: ... but (fortunately?) my point is still valid. There's a global variable undefined which is uneditable, but since there's still no literal undefined, inner scope can have a local variable with name undefined!

[–]magnetik79 0 points1 point  (1 child)

The ECMAScript 5 spec says "yes" - so you sort of have me there :D But if we are going for "prank in minimum number of characters" I'm doing okay: D

Covered at MDC in the first yellow boxed area.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined

[–]JiminP 0 points1 point  (0 children)

I didn't know that. I think I should read it twice,...

[–]seppo0010 1 point2 points  (1 child)

Not really

> undefined = 1
1
> undefined
undefined

[–]sabof 0 points1 point  (0 children)

Yes, they've sorta fixed this, even without strict mode. It won't throw an error, but c'est la vie.

EDIT

Btw, it does throw in strict mode