Javascript ilə bir çox sol vəzifələr

 var var1 = 1, var2 = 1, var3 = 1; 

Bu, buna bərabərdir:

 var var1 = var2 = var3 = 1; 

Əminəm ki, bu dəyişənləri müəyyənləşdirən əmrdir: var3, var2, var1, bunlara bərabər olacaq:

 var var3 = 1, var2 = var3, var1 = var2; 

Bunu javascriptdə təsdiqləmək üçün bir yol varmı? Bəlkə bir növ profilerin köməyi ilə?

155
18 нояб. 18 noyabrda David Calhoun tərəfindən təyin olundu 2009-11-18 22:48 '09 da 10:48 PM 2009-11-18 22:48
@ 6 cavablar

Əslində,

 var var1 = 1, var2 = 1, var3 = 1; 

bərabər deyil:

 var var1 = var2 = var3 = 1; 

Əhatə dairəsi:

351
18 нояб. Cavab Crescent Fresh 18 noyabrda verilir. 2009-11-18 23:39 '09 at 11:39 2009-11-18 23:39

JavaScript ataması sağdan sola işləyir. var var1 = var2 = var3 = 1; ,

Bu dəyişənlərin hər hansı birinin dəyəri bu operatordan sonra 1 var1 , məntiqi olaraq sağda başlamalıdır, əks halda dəyər və ya var1var2 qeyri-müəyyənləşdiriləcəkdir.

border=0

Siz bunu bərabər hesab edə bilərsiniz var var1 = (var2 = (var3 = 1)); ilk növbədə bracket seti qiymətləndirilmişdir.

15
18 нояб. Cavab 18 noyabrda Justin Johnson tərəfindən verilir 2009-11-18 23:15 '09 at 11:15 PM 2009-11-18 23:15
 a = (b = 'string is truthy'); // b gets string; a gets b, which is a primitive (copy) a = (b = { c: 'yes' }); // they point to the same object; a === b (not a copy) 

(a b) mantıksız (a? b: a) və çarpma kimi davranır (məsələn, !!a * !!b )

(a || b) mantıksız (a? a: b) və bir əlavə kimi davranır (məsələn, !!a + !!b )

(a = 0, b) qısaldılmış formada, əgər düzgündürsə, budur ki, budur


 a = (b = 0)  "nope, but a is 0 and b is 0"; // b is falsey + order of operations a = (b = "b is this string")  "a gets this string"; // b is truthy + order of ops 

JavaScript operator prioriteti (əməliyyatlar qaydası)

Virgülün operatoru həqiqətən ən az imtiyazları olan operatordur, ancaq parantezlər ən çox imtiyazlıdır və bir satırda ifadələr inşa edərkən əllərindən istifadə edirlər.


Sonda, hard-kodlu dəyərlər deyil, "thunks" ehtiyac ola bilər və mənim üçün thunk bir funksiya və nəticəli dəyərdir (eyni "şey").

 const windowInnerHeight = () => 0.8 * window.innerHeight; // a thunk windowInnerHeight(); // a thunk 
8
30 апр. cavab verildi neaumusic Apr 30 2015-04-30 11:22 '15 'da 11:22' de, 2015-04-30 11:22

var var1 = 1, var2 = 1, var3 = 1;

Bu halda, var sözü üç dəyişənə aiddir.

 var var1 = 1, var2 = 1, var3 = 1; 

bu da ekvivalent deyil:

var var1 = var2 = var3 = 1;

Bu vəziyyətdə, ekranlar arxasında var sözü yalnız var1 görə yüksəklik dəyişəninə görə tətbiq olunur və var1 qalan hissəsi normal qiymətləndirilir, buna görə də var2, var3 dəyişənlər qlobal olur

Javascript bu kodu aşağıdakı qaydada işləyir:

  var var1; //only variable declarations will be hoisted. var1= var2= var3 = 1; 
7
14 марта '16 в 12:35 2016-03-14 12:35 Cavab 14 Mart, 14:35 'də Gangadhar Jannu tərəfindən verilir. 2016-03-14 12:35

Aşağıdakıları cəhd edin:

 var var1=42; var var2; alert(var2 = var1); //show result of assignment expression is assigned value alert(var2); // show assignment did occur. 

İlk xəbərdarlıqda tək '=' bildirin. Bu tapşırıq ifadəsinin nəticəsi təyin dəyəri olduğunu göstərir və ikinci xəbərdarlıq bu tapşırığın həqiqətən meydana gəldiyini göstərir.

Məntiqi olaraq təyinatın sağdan sola bir zəncir olması lazımdır. Bununla birlikdə, javascript üçün bütün atom olduğundan (orada heç bir mövzu yoxdur), xüsusi mühərriki həqiqətən bir az fərqli şəkildə optimallaşdırmağı seçə bilər.

4
18 нояб. Joel Coehoorn tərəfindən verilmiş cavab 18 noyabr 2009-11-18 22:50 '09 at 10:50 pm 2009-11-18 22:50

coffee-script bunu aplomb ilə edə bilər ..

 for x in [ 'a', 'b', 'c' ] then "#{x}" : true 

[ { a: true }, { b: true }, { c: true } ]

-2
15 окт. 15 oktyabrda Alex Gray tərəfindən verilmiş cavab . 2015-10-15 07:43 '15 saat 07:43 'da 2015-10-15 07:43

bağlı digər suallar və ya sual soruşun