3 ms·
This throws an error: typeof x; // throws an error let x = 1; This doesn't: typeof x; // returns "undefined" var x = 1; While using variable
by erkl 12y ago
This throws an error:
typeof x; // throws an error
let x = 1;
This doesn't:
typeof x; // returns "undefined"
var x = 1;
While using variables before declaring them is bad practice, I think it's fair to argue that this behaviour is inconsistent.
- deleted 12y ago[deleted]
- ajanuary 12y agolet x = 0; function typeof_wrapper(y) { return typeof y; } (function() { typeof_wrapper(x); // throws an error let x = 1; })(); (function() { typeof_wrapper(x); // returns "undefined" var x = 1; })(); Again, typeof isn't throwing the error, the runtime is, because a variable declared with "let" is being referenced before the declaration. It's not inconsistent, it's one of the main points of "let". You're essentially arguing that a feature added because the old behaviour was undesirable is inconsistent because it's not exhibiting the old undesirable behaviour.