JavaScriptの質問です。

以下のコードを実行させると、
 Firefoxでは「true」(2つ目はエラー)
 Chromeでは「false」「true」
とアラートが出るのですが、これはどのような仕様の違いから生まれているのでしょうか?
参考になるページなどがあれば教えてください。
 
 
 
if(1){
  function a(){
    return true
  }
}else{
  function a(){
    return false
  }
}
while(0){
  function b(){
    return true
  }
}
alert(a());
alert(b());

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2011/10/15 10:18:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント300pt  
: SpiderMonkey  JavaScript  zero 
 - MDN

IE9,Chrome14,Safari5,Opera11 vs Firefox7



http://jsfiddle.net/E7wqY/ 
http://jsfiddle.net/5KaMp/ 

<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p><a href="http://q.hatena.ne.jp/1318587775">http://q.hatena.ne.jp/1318587775</a></p>
<script>
if(1){
  a = functiona(){
    return 'a1'
  }
}else{
  a = functiona(){
    return 'a2'
  }
}
while(0){
  b = functionb(){
    return 'b'
  }
}
alert(a());
alert(b());
</script>
</body>
</html>
id:Lhankor_Mhy



ECMAscript

ECMAscriptFirefox

 


2011/10/15 10:18:06
  • id:teramako
     ECMAScriptifwhileJS

     http://nanto.asablo.jp/blog/2005/12/10/172622

    ECMAScript 3rd, 5th 5h  ECMASCript 6th (Draft)6th
  • id:Lhankor_Mhy
     
    FunctionExpression 

    (function a(){})
  • id:think49
     > 
    > (function a(){})
    > 



    ---
    /**
     *  0 
     */
    (function a (i) {
     return --i ? a(i) : i;
    })(5);
    ---

    arguments.callee 使Strict Mode 使
    IE8- 使
    http://d.hatena.ne.jp/think49/20110521/1305959222

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません