JavaScript Compiler Errors

JavaScript Compiler Errors that should be fixed. I have run across a few errors in the JavaScript compilers that are in most browsers. These errors are troublesome since a few billion people rely on the accuracy of this application. 

To make things worse, if the errors are fixed, it may break applications that are now working. Of course no one really seems to care about this consequence. I have many application that no longer work due to arbitrary changes to JavaScript and to HTML 


status = false;
if (! status) alert('failed');
This fails in IE and in Chrome... someone forgot to change the type of "status" from string to boolean. The "status" variable is a global, however this should not fail to show the message "failed".

The compiler converts the boolean false to a string of value "false", which makes "status" always a true value.

"status" could be a property, it kind of acts that way, except that I can use "window.status = false;" and it works as expected, therefore it is not a normal variable assignment.  This error is for all global initial string variables. I use the term "error" since it does not act as "expected".

	var obj;
	obj = {xcount: 0};
	Object.defineProperty(obj, 'count', { get: getCount });

	function getCount() { return this.xcount++;	}

The problem of getters and setters and how to determine their use. The "typeof" operator only returns the type of the returned value of the property which has devastating consequences. The error which is to perform execution of a property when none was expected, and I may want to know that count is a "property" and not a "number". 

This error was due to lack of experience on the part of the developer of JavaScript. It was easy to assume this functionality based on the amount of work it would take to implement it correctly. 

The debugger is tied directly to this action, and is wrong, since the debugger is executing code and corrupts the program.

The type of the property cannot be determined, this is wrong, or at a minimum is restrictive to application development.

The fixes to JavaScript may "fix" this error, but I am afraid that this poor logic may propagate to newer version of JavaScript,  in which case, it may take centuries to correct.

	a = 2 & 3 == 2;		// wrong   	a = 2 & 0
	b = (2 & 3) == 2;	// correct	a = 2 == 2

	c = 4 + (6 == 10);	// wrong	a = 4 + 0
	d = 4 + 6 == 10;	// correct	a = 10 == 10

	alert(	'a = ' + !!a + ' b = ' + b + '\n' +
		'c = ' + c + ' d = ' + d);

JavaScript Operator precedence

Really irritating that bitwise AND and OR should have lower precedence than boolean equality.
I can see no difference in 2 + 3 and 2 & 3, they are simply operations between two values

if I say "3 plus 2 equals 5" or "3 and 2 equals 1" these should both be true statements, but not as things stand now.  The "C" language set this order of precedence, I am not sure it has ever been checked. ALGOL set logical and bitwise precedence the same, which needed to be fixed, but the solution was upside down.