Gerçekten işlevi gibi.
$matches = array('12', 'watt');
list($value, $unit) = $matches;
Bunun bir JavaScript eşdeğeri var mı?
Var, ama Javascript "yeni" sürümleri: Destructuring assignment - Javascript 1.7. Muhtemelen sadece Mozilla tabanlı tarayıcılarda desteklenir, ve belki Rhino oluyor.
var a = 1;
var b = 3;
[a, b] = [b, a];
EDIT: (böylece ve Krom) V8 Javascript kütüphanesi bu destekliyorsa aslında bana sürpriz olmaz. Ama bunun üzerinde sayılmaz :)
This is my solution for using List/Explode on Javascript. Fiddle Working Example
İlk uygulama:
var dateMonth = "04/15";
dateMonth.split("/").list("month","day", "year");
month == "04";
day == "15";
year == null;
Ayrıca, yeni oluşturulan değişkenler kapsam sağlar:
var scoped = (function()
{
var dateMonth = "07/24/2013";
dateMonth.split("/").list("month","day", "year", this);
this.month == "07";
this.day == "24";
this.year == "2013";
})();
Bu, bir dizi prototip değiştirerek gerçekleştirildi.
Array.prototype.list = function()
{
var
limit = this.length,
orphans = arguments.length - limit,
scope = orphans > 0 && typeof(arguments[arguments.length-1]) != "string" ? arguments[arguments.length-1] : window
;
while(limit--) scope[arguments[limit]] = this[limit];
if(scope != window) orphans--;
if(orphans > 0)
{
orphans += this.length;
while(orphans-- > this.length) scope[arguments[orphans]] = null;
}
}
CoffeeScript sözdizimi ile strüktür atama sunmaktadır:
[a, b] = someFunctionReturningAnArray()
Bu çok yeni bir JavaScript versiyonları sunulan özelliği hemen hemen aynıdır. Ancak, CoffeeScript hatta IE6 JavaScript motoru ile uyumludur derlenmiş JS üretir, ve uyumluluk önemlidir, bu nedenle iyi bir seçenektir.