2013-10-17 104 views
-1

我正在通過閱讀Eloquent JavaScript來學習JavaScript。我在本書網站提供的控制檯上運行我的代碼。我從以下代碼中獲得SyntaxError : Unexpect Identifier。請幫忙。JavaScript語法錯誤

function absolute (n){ 
    if (n < 0) 
    return -n; 
    else 
    return n; 
} 

function average(x, y){ 
    return (x + y)/2; 
} 


function isGoodEnough(x, guess){ 
    return (absolute(x - guess) < 0.0001); 
} 

function maybe(x, guess){ 
    if isGoodenough(x, guess){ 
    return guess; 
    } 
    else{ 
    return maybe(x, average(x, x/guess)); 
    } 
} 

function sqrt(x){ 
    return maybe(x, 1); 
} 
+1

它是否告訴你哪一行是語法錯誤? –

+1

你在'maybe'函數的'if isGoodEnough(x,guess)'周圍丟失了括號。 –

+0

您應該使用'return -1 * n',而不是'return -n'。另外,[JSlint](http://www.jslint.com/)是你的朋友。 – Bucket

回答

1

isGoodEnough在可能的函數中被拼寫錯誤。

function maybe(x, guess){ 
    if isGoodenough(x, guess){ 
    return guess; 
    } 
    else{ 
    return maybe(x, average(x, x/guess)); 
    } 
} 
+0

這是真的,但拼寫錯誤會導致最多ReferenceError ,而不是一個SyntaxError。 –

+0

啊對,我的錯。 – Default

+0

如果修正了括號和拼寫錯誤。現在我超過了最大的調用堆棧。我會用循環重寫它。 – user1937976

2

if isGoodenough(x, guess){缺少括號:if(isGoodenough(x, guess)){

1

你錯過了括號

if isGoodEnough(x, guess){ 
    return guess; 
    } 

應該

if (isGoodEnough(x, guess)){ 
    return guess; 
    } 
1

您需要解決此if條件括號:

function maybe(x, guess) { 
    if (isGoodEnough(x, guess)) { // Note extra parentheses 
     ... 

(你還拼錯 「isGoodEnough」 在這裏。)

3

你錯過了你的if聲明括號:

if (isGoodEnough(x, guess)) { 

您還拼錯函數名,這將導致不同的錯誤。

0

你需要在if條件和其他條件下都加上parantheses。如果使用統計信息,還可以使用括號來測試統計信息。應該看起來像

function absolute (n){ 
    if (n < 0){ 
    return -n; 
    } 
    else { 
    return n; 
    } 
    } 

function average(x, y){ 
    return (x + y)/2; 
    } 


function isGoodEnough(x, guess){ 
    return (absolute(x - guess) < 0.0001); 
    } 

function maybe(x, guess){ 
    if (isGoodEnough(x, guess)){ 
    return guess; 
    } 
    else{ 
    return maybe(x, average(x, x/guess)); 
    } 
} 

    function sqrt(x){ 
    return maybe(x, 1); 
    }