2016-09-05 7 views
-3

これはjavascriptコンパイラエラーで、else ifとなる可能性があります。Javascript if else compiler bug?

ここにコードがあります。

"use strict" 
var me ; 
var a=1; 
if (a==1) 
{me ="hello"} 
else if (a==2) 
{me ="bye"} 
else id (a==3) 
{me ="ups"} 
console.log(me) 

私が持っているノート 'ID' とない 'が'。

あなたは「私」.... し、エラーのための最終的な「アップ」の値を持っている....

が起こるのは何クロム& Firefoxの

でチェック!はい、あなたはそれが単にこの場合は特別な何もしません、でも任意のif文またはそのようなことなく、コードブロックを囲む{}ブラケットを持つことができます

… 
else { 
    id(a == 3); 
} 

{ 
    me = "ups"; 
} 

+2

'id(...)'は関数呼び出しです。それは 'else'ブロックの唯一の内容です。それに続くのは、常に実行される余分な '{}'を持つ別のブロックです。 – deceze

+1

そして、 'else'ブロックには決して到達しないので、あなたは*「id is not defined」*エラーを取得していません。 – adeneo

+0

@adeneo。 De 'dの手紙は非常に' f 'の手紙の近くにあります。 IMHOコンパイラはエラーを発生させる必要があります.....私はid関数を持っていません.... – civiltomain

答えて

4

あなたのコードは同等です。 me = "ups"ステートメントは、else句に関連付けられていないために常に実行されます。id()は、そのブロックに関連付けられた唯一のステートメントです。

いいえ、それはコンパイラのバグではなく、あなたが書いたものです。