Должен или нет и как должен работать такой код - я, к сожалению, не могу сказать. Мне кажется, что должен он вызывать ошибку, хотя чёрт его знает. Учитывая, что в JS можно переопределять переменные, а также то, что переменная передастся по значению - скорей всего просто будет создана локальная переменная b, которой присвоится a или b в зависимости от количества параметров.
Однако тут уже стоит задать вопрос "зачем это нужно"? Не могу понять, что Вы хотите чтобы этот код делал? Если нужно просто какое-то значение по умолчанию на случай, если b не будет передано, то вот:
function MyF(a, b) {
var z = b || a;
/*дальше делаем что хотим с z, которая будет содержать b, если оно передано, не false, не null, не пустая строка и не 0. Иначе z будет содержать a*/
}
или
function MyF(a, b) {
var z = a;
if (b != undefined) {
z = b;
}
/*дальше делаем что хотим с z*/
}
Первый способ красивей, но может не подойти в ряде случаев (например, если в b может передаваться 0 или пустая строка)
Отредактировано Gendelf_Lugansk (24-01-2012 02:36)