Jslint-də "gözlənilməz ++" səhv

Nədir? Bunun üçün ən yaxşı təcrübə?

Jslint bu "qarışıqlıq əlavə edir." Bunu görə bilmərəm ...

EDIT: İstək kodu:

  var all,l,elements,e; all = inElement.getElementsByTagName('*'); l = all.length; elements = []; for (e = 0; e < l; (e++)) { if (findIn) { if (all[e].className.indexOf(className) > 0) { elements[elements.length] = all[e]; } } else { if (all[e].className === className) { elements[elements.length] = all[e]; } } } 
139
08 июня '10 в 21:44 2010-06-08 21:44 KdgDev 08 iyun 'da 21:44' də soruşdu 2010-06-08 21:44
@ 8 cavab

Jslint ipuçlarını təqib etmək istəyirsinizsə, əvəzinə i += 1 istifadə edin.

90
09 июня '10 в 7:42 2010-06-09 07:42 Cavab mütləq 09 iyun, saat 09: 00 -da olacaq. 2010-06-09 07:42

Yalnız javascript faylının qarşısında əlavə edin.

border=0
86
18 сент. Rico Sonntag 18 sep verdiyi cavabı verdi . 2012-09-18 14:17 '12 at 2:17 pm 2012-09-18 14:17

Qarışıqlıqları və mümkün olan problemləri aradan qaldırmaq üçün, həmişə eyni operatorla birlikdə istifadə edildikdə və operatorun ətrafında parensləri dəyişin (+ və ya -).

 var i = 0, j = 0; alert(i++ +j); 

Bu, i və j əlavə edir (və məni yan təsirlə artırır), nəticədə 0 xəbərdarlığı ilə nəticələnir.

Amma kimsə gəlir və yerə hərəkət edir?

 var i = 0, j = 0; alert(i+ ++j); 

İndi bu ilk addımlar j, sonra isə yeni dəyərə j əlavə edir, nəticədə xəbərdarlıq 1 görünür.

Bunu yerinə yetirməklə asanlıqla həll edilə bilər

 var i = 0, j = 0; alert((i++) +j); 

İndi bu bir səhv ola bilməz.

28
08 июня '10 в 21:54 2010-06-08 21:54 Cavab Sean Kinsey tərəfindən 08 iyun 2010-da saat 21:54 'də verildi. 2010-06-08 21:54

Şəxsən mən i++ kimi simli ifadələr qoymağa üstünlük verirəm. Daha geniş bir ifadənin bir hissəsi olaraq bunları içərisində, xəttin nə edəcəyini bilməyənlər üçün qarışıqlıq yarada bilər.

Məsələn, əvəzinə:

 value = func(i++ * 3); 

Bunu edərdim:

 value = func(i * 3); i++; 

Bu da insanların i++++i necə işlədiyini xatırlamaq məcburiyyətində deyildir və olduqca çox sayda üstünlük qaydalarına riayət etmək ehtiyacını aradan qaldırır.

14
08 июня '10 в 21:47 2010-06-08 21:47 Cavab Samir Talvarı tərəfindən 08 iyun '10' da 21:47 'də verildi. 2010-06-08 21:47

++ Operatorunun əsl problemi yan təsirləri olan operatordur və buna görə funksional proqramlaşdırma prinsipinə tamamilə zidddir.

i++ tətbiq edəcəyi "funksional" şəkildə i = i + 1 , yan təsirləri olmadan bir dəyişənə dəqiq olaraq yenidən təyin edərkən istifadə edin.

Qarışıqlıq ehtimalı ++ bir dəyər əlavə edərək və bir dəyişənə verərək iki şey edir.

9
14 марта '13 в 1:09 2013-03-14 01:09 Cavab 14 mart 'da 13:05' da benzonico tərəfindən verilir . 2013-03-14 01:09

Jslint dostluq loop

 for (i = 0; i < 10; i += 1) { //Do somthing } 
6
17 апр. Cavab GeographicPerspective tərəfindən verilmişdir 17 Aprel. 2015-04-17 01:33 '15 at 1:33 2015-04-17 01:33

Qeyd edək ki, ++ operator əvvəlki / növbəti dəyişənə nisbətən mövqeyə və əməliyyatlar sırasını müəyyən etmək üçün yeni satır / nöqtəli nöqtəyə bağlıdır.

 var a = 1; var b = a++; console.log(b); // b = 1 console.log(a); // a = 2 var a = 1; var b = ++a; console.log(b); // b = 2 console.log(a); // a = 2 
4
01 нояб. cavab verildi miketheprogrammer 01 Nov. 2013-11-01 19:27 '13 at 19:27 2013-11-01 19:27

Əvvəlcədən artırma deyilən bir şey var: ++ məni və sonrası artım mənə ++ fərqdir:

 var i = 9; alert(++i); //-> alerts 10 var j = 9; alert(j++); //-> alerts 9 alert(j); //-> alerts 10 now, as expected var k = 9; alert((k++)); //-> still alerts 9 even with extra parentheses 
3
14 марта '13 в 0:57 2013-03-14 00:57 Cavab Paul Scheltema tərəfindən 14 Mart '13 'də 0:57 2013-03-14 00:57 tərəfindən verilir

bağlı digər suallar və ya bir sual