Well, .join(x) joins an array into a string, with x as the separator. First of all what does Array(16) make? Effectively it should make an array with null 16 times. Now, JavaScript seems to think null is a blank string, a string with the text 'null', or a zero depending on the context.
The first thing it should do is TypeError that null is not a string. Or don't join null fields because there is nothing there.
If is does convert null to '', then it should TypeError on string - int. If it is not going to TypeError it should do something sensible, like slice the string
I think the correct thing would be to TypeError in two different places. Or change the language so things that don't error actually work. Returning a string with NaNs in it will just lead to uncaught errors. If it actually returns something it should probably be ' Batman!'.
JavaScript nuttiness:
Now it's zero:
> null + 1
1
Now it's "null":
> null + "text"
'nulltext'
Now it's a blank string:
> [null, null, null].join()
',,'
Python errors when things don't make sense, and forces you to make them make sense:
If it doesn't work, error:
>>> "wat" - 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'
Can't join None into a string:
>>> ','.join([None, None, None])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, NoneType found
Convert None to a string if you want:
>>> ','.join([str(i) for i in [None, None, None]])
'None,None,None'
But it makes more sense to drop the None:
>>> ','.join([str(i) for i in [None, None, None] if i])
''
The first thing it should do is TypeError that null is not a string. Or don't join null fields because there is nothing there.
If is does convert null to '', then it should TypeError on string - int. If it is not going to TypeError it should do something sensible, like slice the string
I think the correct thing would be to TypeError in two different places. Or change the language so things that don't error actually work. Returning a string with NaNs in it will just lead to uncaught errors. If it actually returns something it should probably be ' Batman!'.JavaScript nuttiness:
Now it's zero:
Now it's "null": Now it's a blank string: Python errors when things don't make sense, and forces you to make them make sense:If it doesn't work, error:
Can't join None into a string: Convert None to a string if you want: But it makes more sense to drop the None: