- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Fri, 10 Jul 2009 16:24:06 -0700
- To: Boris Zbarsky <bzbarsky@MIT.EDU>
- CC: Philip Taylor <pjt47@cam.ac.uk>, HTML WG <public-html@w3.org>
Boris Zbarsky wrote:
> Andrew Fedoniouk wrote:
>>> if(nodeType != null && nodeType != 'undefined') {
>>> var remNodes = atNode.getElementsByTagName(nodeType);
>>> }
>>> else {
>>> var remNodes = atNode.childNodes;
>>> }
>>> var nodeLim = remNodes.length;
>>> for(var x = 0; x<nodeLim; x++) {
>>> atNode.removeChild(remNodes[0]);
>>> }
>>>
>> I am not sure this piece will run at all.
>> remNodes will not be seen outside blocks where they declared: { var
>> remNodes = whatever }
>
> I suggest reading up on variable scoping in ECMAScript. var has
> function scope. In fact, the following is a perfectly valid
> ECMAScript construct:
>
> function foo() {
> alert(x);
> var x;
> }
>
> and will alert undefined. Removing the var declaration will throw an
> exception due to x not being defined.
Oh! And also this....
It means that call/stack frame here
function foo()
{
if(..) {
var one = ...;
} else {
var two = ...;
}
}
needs to be as twice bigger than it is needed. But who cares of course
these days....
Thanks for the reminder, Boris.
>
>> But this counts as a proof that it might be some code in the wild
>> that rely on this.
> Sure is (esp. note that this is a library used by all sorts of sites).
I can imagine. That's just highlights responsibility of public standards
developers.
Forests on this planet will go away slightly sooner because of tons of
"small" things like that live NodeList.
>
> -Boris
>
>
--
Andrew Fedoniouk.
http://terrainformatica.com
Received on Friday, 10 July 2009 23:24:52 UTC