• ベストアンサー

Javascript について質問です

var tired=true; var bored=false; var nap = function() { if(tired || bored){ console.log("OK"); } else{ console.log("else"); } }; 上記のコードを書いた際、下記の実行結果となり、OKが表示されません。 どなたか原因が分かる方がおりましたら、教えてください。 else

質問者が選んだベストアンサー

  • ベストアンサー
  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.3

今回のあなたのコードを実行しても、 「OK」も「else」も絶対に表示されません。 どちらかを表示させるためには 「nap();」と実行する部分が必要です。 また「nap();」と実行する部分を加えただけのコードであれば 「OK」が表示されます。 ですので、「else」を表示されたのであれば、「nap();」 と実行する部分があり、かつそれ以外にも異なる部分があるはずです。 しかし、あなたが実際に実行したコードが質問のコードと どこがどう違うのかはあなたにしか分かりません。 今回の限らず昨日の質問もそうでしたので、あなたは実際に実行したコードと 質問する際のコードで異なるものを使うクセがあるように思います。 質問が間違っていれば適切な回答は得られにくくなります。 質問をする際には、実際に実行したものを使うようにしたほうがいいですよ。

34ttta
質問者

お礼

ありがとうございます。

その他の回答 (3)

回答No.4

最後の行にnap();が抜けていますね ------------------------------------ var tired=true; var bored=false; var nap = function() { if(tired || bored){ console.log("OK"); } else{ console.log("else"); } }; nap(); ------------------------------------ でもこちらでも、見るときちんとOKが表示されましたから おそらくそちらで試している最中でturedとかboredの変数の中身をいじっているところがあるのでしょう。

34ttta
質問者

お礼

ありがとうございます。

  • sanzero
  • ベストアンサー率56% (58/102)
回答No.2

変数を宣言する前にnap()を使っているんじゃないですか? napの中でtiredとboredをconsole.logで確認してみて下さい。

34ttta
質問者

お礼

ありがとうございます。

  • t_ohta
  • ベストアンサー率38% (5081/13277)
回答No.1

私の手元では OK になりますよ。

34ttta
質問者

お礼

ありがとうございます。

関連するQ&A

  • Ajaxがおかしいんです

    Javascript初級者です。 Ajaxを使ってデータの重複チェックを行おうとしました。 ところがAjaxがヘンな動きをするんです。 以下のコードなんですが、上の登録処理の中で、function doubleCheck を呼んで います。 問題は2つあって、ひとつは実際に重複していてもしていなくても「true」を 返してくることです。 console.log("res=========" + res) には「yes」とか「no」とか重複有り無しで 異なりますが、ちゃんとそれぞれセットするにも関わらず、 if(!doubleCheck() では必ず「false」が戻ってきてしまいます。 もう一つおかしい点は、重複検索(これはPHPでやってます)の最中にもかかわらず、 「true」が返ってきて "重複があったので登録できません。" お、出てしまうことです。 それで調査するために console.logその2を入れてみました(※※※のところ)。 ところがこの console 何も吐き出しません。 ということは doubleCheck() の最後の if文にたどり着いていない、または 途中でエラーになっているのかもしれません。 私の書いた Ajax のコードがおかしいんでしょうか。 どなたか御指導下さい。 よろしくお願いします。 // 追加登録処理 function doActionAdd(){ if(dataCheck()){ // customerId が 空白か否かのチェック if($('#customerId').val() == ""){ if(window.confirm("追加登録していいですか?")){ if(!doubleCheck()){ window.alert("重複はありませんでした"); }else{ window.alert("重複があったので登録できません。"); }  (以下略) function doubleCheck(){ var yomi = $('#customerYomi').val(); var res = ''; // 重複チェック $.ajax({ type: "POST", url: "../customer/CustomerDoubleCheck.php", data: {"customerYomi":yomi}, dataType: 'text', // ajax通信が成功したときの処理 success: function(request){ console.log("request=========" + request); var json = JSON.parse(request); console.log(json[0].result ); res = json[0].result; console.log("res=========" + res); }, error: function(XMLHttpRequest, textStatus, errorThrown){ $('div#jobStatus').text("重複チェック検索ができませんでした。"); return false; } }); console.log("resその2=========" + res); //※※※ if(res == "yes"){ // 重複していたので「false」を返す。 return false; }else{ // 重複していなかったので「true」を返す。 return true; } }

  • javascript 一回目実行

    失礼します現在一回目だけ処理したい内容があり、サンプルコードを探してみたのですが、 処理の流れがわからない状態です汗 ご教授頂けると助かります //即時関数 var trueOnlyFirstTime = (function(){ var b = true; //戻り値として関数を実行する return function(){ if(b){ b = false; return true; } return false; }; })();

  • 「true」と「false」

    ●質問の主旨 「( ) 」の 条件式 の 値 が「true」 なら「正解だ / right」とプリントしたい。 「false」 の時は「間違い / wrong 」とプリントしたい。 下記のようなコードを入力しましたが、 コンソールするとエラーが返されます。 どこが間違いなのか、コードを何度読み直しても 分かりません。どなたかご存知のかたご教示願います。 ●javascriptのコード if ("Leng".length === 4){ console.log("正解だ / right"); // 1行目が正しければ,ここのコードを実行 }else{ // 正しくなければ console.log("間違いだ / wrong"); }

  • Javascript について質問です

    for in 文について質問です。(実行結果は一番下にあります。) 本当に分からなくて困っています。質問自体長く、お見苦しい点も多いと思いますが、皆様の力が必要なので、分かる方がおりましたら助けてくださると本当にありがたいです。 下記のように、friendsというオブジェクトを定義しました。 いまいち、オブジェクトの意味が理解できていないので、表層的なことしか理解できておりません。下記のプログラムは動きましたが、codeacademyというサイト上で動かしているので、少し実行結果が変わってしまい、よくわかりません。 質問(1):そこで質問なのですが、下記(真下)のプログラムは、どのような動きをしているのでしょうか。これは単純に、steve,jobsを出力するためのプログラムでしょか? var list= function(friends){ for(var i in friends){ console.log(i); } } 質問2;こちらの関数についてですが、nameを引き渡していますが、プログラム上には何も定義していないのに、動きました。なぜ動くのでしょうか? var search = function(name) { for (var key in friends) { if(friends[key].firstName== name){ console.log(friends[key]); return friends[key]; } } }; 質問3; search 関数の中で、for in 文の中にiを定義していますが、これは、単純にプロパティの個数文、for文を回すものと理解してもよろしいでしょうか。 私が気になっているのは、friends[i]となっても、friendsオブジェクトでそのような変数を定義していないので、マッチしないと思い、いまいち理解しきれません。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー var friends={ steve: { firstName: "Steve", lastName: "jobs", number: "090", address: ["Apple fundor"] }, bill: { firstName: "Bill", lastName: "Gates", number: "080", address: ["Microsoft fundor"] } }; var list= function(friends){ for(var i in friends){ console.log(i); } } var search = function(name) { for (var key in friends) { if(friends[key].firstName== name){ console.log(friends[key]); return friends[key]; } } }; ーーーーーーーーーーーーーーーーーーーーー実行結果ーーーーーーーーーーーー { firstName: 'Steve', lastName: 'jobs', number: '090', address: [ 'Apple fundor' ] } { firstName: 'Steve', lastName: 'jobs', number: '090', address: [ 'Apple fundor' ] } { firstName: 'Bill', lastName: 'Gates', number: '080', address: [ 'Microsoft fundor' ] }

  • Javascript について質問です

    Javascriptで下記のような文章を書きました。 for(var i=0;i<3;i++){ console.log("T"); }; i=0; while(i==2){ console.log("i=0です"); i++; }; なんで実行結果に、0が入るのでしょうか? またwhile文についてですが、実行されておりません。条件式をi<2にしたら動きました。 理由が分からないので、教えてください。 実行結果 T T T 0

  • javascriptのクロージャが理解できずに苦しんでいます。

    javascriptのクロージャが理解できずに苦しんでいます。 下記のようなコードをよく見るのですが、a()とfuncA()()が等価のようなのですが 実行するとa()の場合のみ変数の値が維持されます。 a()とfuncA()()の違いを理解したいと思っています。 どなたかどうぞよろしくお願い致します。 またクロージャのわかりやすい解説サイトなどご存知の方いらっしゃいましたら 合わせてよろしくお願い致します。 function funcA() { var i = 10; return function() { i++; alert(i); }; }; var a = funcA(); console.log(a() === funcA()())//true funcA()();//11 funcA()();//11 funcA()();//11 a();//11 a();//12 a();//13

  • Javascript について質問です

    for(var i=0;i<3;i++){ console.log("it"+ i); i++; }; 上記の実行結果が下記のようになり、i=1が表示されません。 すいませんが、教えてください。

  • JavaScriptの記述が長い

    ホームページビルダー11でJavaScriptものの記述がとても長くなっています。HPBが、ホームページビルダーの略だとは思われますが、 この中で削除しても影響のない記述はありますでしょうか? 多少でもサイトの読み込み速度を早くしたいと考えています。 宜しくお願いいたします。 /////////////////////////////////////////////////////////// <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_ROV_50 function HpbImgPreload() { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var imgName = HpbImgPreload.arguments[0]; var cnt; swImg[imgName] = new Array; for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++) { swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image(); swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt]; } } } } function HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } function HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } var swImg; swImg=new Array; ここにはロールオーバー類記載 HpbImgPreload('_HPB_ROLLOVER2', 'banner/618-115.jpg', 'banner/618-115.jpg'); //--> </SCRIPT>

  • javascriptの呼び出し方

    「下記を組み込んで使って」知り合いより依頼を受けました。 そこで、下記処理を呼び出す場合、 var API = new GETAPI(); とすると、search.login/search.get/search/logout 全部callされる事になります。 それをここに呼び出す方法としてはどうしたらいいかご教授下さい。 例えば、search.loginだけを呼び出したい。 ======================================== (function(){ window.GETAPI = function(){ var search = this; search.login = function(param){ console.log("login"); }; search.get = function(param){ console.log("get"); } search.logout = function(param){ console.log("get"); } return search; } }()); ======================================== 自分のイメージとしては上記処理ではなく、 下記処理で知り合いから頂くものと思ってたので、 ここに呼び出す事は可能だと思っていました。 ========== GETAPI.prototype{ 'login' : function(param){ }, 'get' : function(param){ }, 'logout' : function(param){ } } ========== 基本的なjavascriptの質問になってしまいますが、 宜しくお願い致します。

  • 【JavaScript】二重送信防止

    いつもお世話になっております。 JavaScriptの二重送信防止についてご教授ください。 現在、下記のJavaScriptを組んでいるのですが、うまく二重送信防止が効いていません。 どこか、おかしなコードがありますでしょうか? ちなみに、<html:text>タグ内でonkeypress="JavaScript:toEnter();"を指定…((1))、 <a href>内でonclick="JavaScript:toAdd();"を指定…((2))しているのですが、 テキストボックス内でエンターを押下した時((1))にうまく二重送信防止が効いていません。 宜しくお願い致します。 <script language="JavaScript"> <!-- var flgSubmit = false; function submitCheck() { if ( flgSubmit ) { return false; } else { flgSubmit = true; return true; } } function toEnter(){ if( submitCheck() ) { if(event.keyCode == 13) toAdd(); } } function toAdd() { if( submitCheck() ) { document.AddForm.submit(); } } //--> </script>

専門家に質問してみよう