Разрушающее присваивание в JavaScript

В смещениях битов JavaScript (>>, <<) всегда выполняются для подписанных 32-битных целых чисел. Это приводит к переполнению диапазона для больших чисел.

16
задан Crescent Fresh 4 March 2011 в 09:12
поделиться

2 ответа

Прежде всего, var [a, b] = f() работает просто великолепно в JavaScript 1.7 - пробуют его!

116-секундный, можно сгладить синтаксис использования немного использование with():

var array = [1,2];
with (assign(array, { var1: null, var2: null }))
{
   var1; // == 1
   var2; // == 2
}

, Конечно, это не позволит Вам изменять значения существующих переменных, так по моему скромному мнению, это намного менее полезно, чем функция JavaScript 1.7. В коде я пишу теперь , я просто эхо-сигналы непосредственно и ссылаюсь на их участников - я буду ожидать этих 1,7 функций для становления более широко доступным.

23
ответ дан Peter Mortensen 4 March 2011 в 09:12
поделиться

Вам не нужен макет "_" переменная. Можно непосредственно создать "глобальные" переменные при помощи объема объекта окна:

window["foo"] = "bar";
alert(foo); // Gives "bar"

Вот еще немного точек:

  • я не назвал бы эту функцию, "присваиваются", потому что это - слишком универсальный термин.
  • , Чтобы более тесно напомнить синтаксис JS 1.7 я сделал бы функциональное взятие местом назначения как первый аргумент и источник как второй аргумент.
  • Используя литерал объектов для передачи целевых переменных прохладно, но может быть перепутан с JS 1.7 destructuring, где место назначения является на самом деле объектом и не массивом. Я предпочитаю просто использовать разграниченный список запятой имен переменной как строка.

Вот то, что я придумал:

function destructure(dest, src) {  
    dest = dest.split(",");  

    for (var i = 0; i < src.length; i++) {  
        window[dest[i]] = src[i];  
    }  
}  

var arr = [42, 66];  

destructure("var1,var2", arr); 

alert(var1); // Gives 42
alert(var2); // Gives 66
4
ответ дан Ates Goral 4 March 2011 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: