IF מקוצר בJS

Master Boo

New member
IF מקוצר בJS

למה זה לא מצליח לי

(str.indexOf(" ")==-1?return str.toLowerCase():return toLower(str.replace(" ","_")));​
האם אפשר בכלל לעשות RETURNים במקוצר? וקראתי איפהשהו שהIF המקוצר בכלל לא מומלץ כי הוא פועל לאט יותר או משהו כזה... נכון או לא?
 

זהר פלד

New member
זה לא מצליח כי זה לא התחביר הנכון.

התחביר הנכון הוא זה:
return (str.indexOf(" ")==-1) ? str.toLowerCase() : toLowerCase((str.replace(" ","_")));​
אבל שים לב - התנאי הזה מיותר לך לגמרי, מכיון שאם ה replace לא מצא התאמה, הוא יחזיר את המחרוזת המקורית - לכן מספיק לכתוב את זה:
return toLowerCase((str.replace(" ","_"));​
וחוצמצזה, מה שקראת הוא לא נכון. התנאי הזה יעיל יותר מתנאי רגיל להשמה של ערך.
 

זהר פלד

New member
תיקון טעות ועוד קצת:

return str.toLowerCase((str.replace(" ","_"));​
עוד קצת: replace כזה יחליף רק את הרווח הראשון. אם אתה רוצה להחליף את כל הרווחים, אתה צריך להשתמש ב regExp בתוך ה replace:
return str.toLowerCase((str.replace(/\s/g,"_"));​
 

Master Boo

New member
כן, אני רוצה להחליף את כולם,

בגלל זה הפונקציה שעשיתי היא רקורסיבית. אבל אני מניח שאני אשתמש ברגאקספי באמת.
 
למעלה