-1

這意味着什麼?將javascript代碼翻譯爲模式可讀代碼,其中if和else

e[i] == "-" && (s > 1 || d === null) && ++s, !s && d !== null && (p.push(e[i]), s = 2), "+-".indexOf(e[i]) < (d = null) && (c = 1); 

不能沒有任何邏輯看了這麼多sumbols

+1

您是否正在嘗試對縮小的代碼進行反向工程?這是什麼意思? –

+0

作業嗎? –

+1

它是mathparser的免費代碼的一部分,我在那個字符串中有一個問題,但我無法修復它,因爲我不明白這樣的語法。任何幫助將受到歡迎! – Mar

回答

2
if (e[i] == "-" && (s > 1 || d === null)) 
    ++s; 

if (!s && d !== null) { 
    p.push(e[i]); 
    s = 2; 
} 

if ("+-".indexOf(e[i]) < (d = null)) 
    c = 1; 

如果你不來一個C的背景下,在最後if分配可能不能吸引你;在這種情況下:

d = null; 
if ("+-".indexOf(e[i]) < null) 
    c = 1; 
+1

謝謝! :) indexOf()給出了int,與null進行比較是無意義的。在這種情況下可以用null替換其他的東西? – Mar

+0

你可以把它改成'「+ - 」。indexOf('+')<0'這個字符少且易於理解。 – Eric

+0

Eric的評論很可能代表了代碼的意圖。 「如果'e [i]'既不是''+'也不是''',那麼'c = 1'」。 'd = null'如何適合,我不能說。所以是的,嘗試使用if語句的第二種形式,並用'<0'替換' Irfy

1

嘗試加入一些空格和換行:

e[i] == "-" && (s > 1 || d === null) && ++s, 
    !s && d !== null && (p.push(e[i]), s = 2), 
    "+-".indexOf(e[i]) < (d = null) && (c = 1); 

注意,這是一個逗號表達式 - 它是用逗號分隔的3個表達式。每個表達式實際上是去

condition && action; 

你可以逃脫在C,因爲這樣&&作品的聲明。對於表達式A && B,執行第一個A,並且只有在A的​​結果爲真時才執行,然後執行。所以自己A && B;可以翻譯爲if(A) B;。當然這隻有在不使用整個表達式A && B的結果時纔有效。

+0

thx!對於愚蠢的問題感到抱歉,但可以用if和else關鍵字來書寫嗎? – Mar

+1

謝謝!我越來越接近理解:)其實我這裏的問題是第三個表達式:比較indexOf()表示null。由於比較類型int與空值,AS3會隨着點發出警告。可以重寫第三個表達式以避免警告消息? – Mar