וורדפרס ואתרי אינטרנט

owl-158414_960_720
דורג 5 מתוך 5

באתר תמצאו מדריכים ומאמרים ייחודים בעברית, המדריכים לרוב מנסיון מעשי ומיוחסים לפרוייקטים שאני עובד עליהם באותו הזמן. האתר הוא יותר לשימוש פרטי ולתיעוד דברים, בכדי להשתמש מאוחר יותר, אבל החלטתי לפרסם ניתן לשאול כל שאלה וגם לתרום מדריכים באתר דרך תגובה או דרך צור קשר

ארכז כאן שאלות שיכולות להישאל במבחני עבודה או סתם דברים טריקים שמצאתי.

 

מה יודפס למסך בהרצת הקוד הבא:

if(val == 1) {
    console.log("val 1");
} else {
    console.log("val not 1");
}

var val = 2; // val not 1

המשך לשאלה:

ואם הייתי משנה בסוף ל

var val = 1;

מה היתה התוצאה

תשובה:

למסך יודפס val not 1

מכיוון שברגע שמכריזים על משתנה עם var אז הוא נדחף לראש הסקופ שבו הוא מוגדר הדבר

הזה מכונה hoisting והוא מאפשר לנו להשתמש במשתנים לפני שהגדרנו אותם.

סעיף ב: גם אם היינו משנים ל 1 זה היה עדיין מדפיס val not 1 בגלל שהדפדפן בתהליך הקומפליזציה, מפרק את ההכרזה ל 2

כלומר הוא מגדיר את המשתנה בתחילת התוכנית אבל לא שם את התוצאה ( 1 במקרה שלנו)

זה נראה כך :

var val;
if(val == 1) {
 console.log("val 1"); 
} else {
 console.log("val not 1"); 
} 
val = 1;

 

 

שאלה על closure :

מה יודפס למסך בכל פעם.

var i = 0;
function inc() {
  return i++;
}

console.log(inc(), inc(), inc(), i); // 0, 1, 2, 3

 

הסבר: פעם ראשונה קוראים לפונקציה inc ואומרים לה להחזיר i ולאחר מכן להוסיף לו 1 .

אז בסקופ שלו אין לו i הוא מחפש את ה i למעלה ומוצא שהוא 0 ומחזיר 0 ומוסיף לו 1.

אותו דבר בפעם השניה מחזיר 1 ואחר כך מעדכן את i ל 2

כנל בפעם השלישית מחזיר 2 ומעלה את i ל 3

בפעם הרביעית מחזירים רק את i אז הוא יחזיר 3 ולא מעלים אותו. אם נמשיך להחזיר רק את i יוחזר 3

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

 

דברים מוזרים ב javascript :

מה יהיה הפלט לדברים הבאים :

null > -1 התשובה היא : true

-1 < {} התשובה: false

-1 > {} == false
-1 < {} == false

זה הבסיס לאחת ההרצאות המפורסמות ברשת חובה לראות – בהתחלה הוא מדבר על רובי ואחר כך ממשיך ל Js

https://www.destroyallsoftware.com/talks/wat

 

מה התוצאה של

x = x++ + ++x

כאשר נניח ש X = 1

התשובה היא : 4

 

יש גם את אתר javabat  יש בו מלא חידות קטנות לפי רמות.

והוא בודק את הפיתרונות עם אינפוטים שונים.

 

מה ההבדל בין הפקודות:

(strpos('ffff:hhhh','ffff') !== false)

BS

(strpos('ffff:hhhh','ffff') === true)

תשובה:

על פניו נראה שהפקודות זהות והתחביר שלהם זהה, אבל הפקודה השניה פחות נכונה, במידה והסטרינג התואם נמצא בהתחלה במיקום 0 כמו בדוגמה אז הפקודה השניה תחזיר שקר כי זה 0 ולכן במקרה כזה עדיף להשתמש בפקודה השניה, אגב הפקודה הזאת משמשת למצא האם יש התאמה של מילה בסטרינג.

 

 

 

תפריט נגישות