論理演算子を使用してオプションを設定する関数の解釈

このQ&Aのポイント
  • JavaScriptの関数内で、論理演算子を使用してオプションを設定する方法についての質問です。
  • 具体的には、ソースコードの6行目の「opts || {}」の部分について、「optsが空でなければoptsを使い、空なら{}を使う」という解釈でいいのかとの疑問があります。
  • また、この関数は引数なしで呼び出すと「名無しさんこんにちは!」と表示され、オプションを指定することでメッセージの内容や名前を変更することができます。
回答を見る
  • ベストアンサー

論理演算子?

論理演算子? 以下のソースの6行目、「opts || {}」の部分ですが、これは、"optsが空でなければoptsを使う。空なら{}を使う。"こんな解釈でいいのでしょうか。 function message(opts) { opts = Object.extend({ name: '名無し', message: 'こんにちは!' }, opts || {}); alert(opts.name + ' さん' + opts.message); } message(); // 名無しさんこんにちは!と表示する message({ name: ' 天野' }); // 天野さんこんにちは!と表示する message({ message: ' こんばんは' }); // 名無しさんこんばんはと表示する message({ name: ' 天野', message: ' おはよう' });// 天野さんおはようと表示する

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

  • ベストアンサー
回答No.1

optsが空(null)?みたいなとき、opts.messageで、エラーがでないようにするという自己流解釈。

関連するQ&A

  • JavaScriptの論理演算子について

    JavaScriptの論理演算子について質問です。 「alert(e.target||e.srcElement);」の結果がtrue かfalseではなくて「object HTMLHtmlElement」となるのは何故なのでしょうか? JavaScriptでは"||"は論理演算子ではないのでしょうか? ----------------------------------------------------------------------- <body> <a id="id1">Textarea</a> <script> (function () {   var i = document.getElementById ("id1");   document.addEventListener("dblclick", addEL, false);   function addEL (e) { alert(e.target||e.srcElement);   } }) (); </script> </body>

  • スコープ演算子について

    php素人です スコープ演算子についておしえてください 質問1 スコープ演算子を使えばclass内の変数を下記のような書き方で取得できますか? 質問2 スコープ演算子を使うとアロー演算子でオブジェクトを作成するよりプログラムの負荷の軽減になるのですか? 質問3 アロー演算子を使わずにスコープ演算子を使ったほうがいいのでしょうか? 質問4 スコープ演算子のデメリットはありますか? class Message { public $number=1; function hello() { return "こんにちは"; } } $number = Message::$number; $message1 = Message::hello(); よろしくお願いします

    • ベストアンサー
    • PHP
  • 生成する際、オブジェクトリテラルに引数を渡すには?

    ■前提 function Man(name) {  this.aisatu = function() {   alert('こんにちは' + name);  } } var man = new Man('伊藤'); man.aisatu(); ・上記をオブジェクト・リテラルに書き直してみたいのですが、どう書けば良いのでしょうか? ・とりあえず下記のようにしてみたのですが、これだと引数として'伊藤'が渡されていないので、なるべく上と同じ内容で、オブジェクト・リテラルに書き直したいです var man = {  name : "伊藤",  aisatu : function () { alert('こんにちは' + this.name) } }; man.aisatu();

  • オブジェクト指向で書いた時のフォーム値受取り

    オブジェクト指向で記述したときの、フォームの値の受取の記述方法 がわかりません。 例えば下記のようなフォームがあったとすると ---------------------- <form name="test"> <input type="text" name="name"> <input type="button" value="送信" onClick="testAlert()"> </form> ---------------------- 手続き型では ============================= function testAlert(){  var name = document.test.name.value;  alert(name); } ============================= こんな感じで値を受取りアラート出力できますが、 オブジェクト指向で記述した場合はどうなりますか? ============================= var aaa = function(name){  this.name = name; }; aaa.prototype.test = function(){  return alert(name); }; ============================= こういうような感じだとは思うのですが、ここから先が分かりません。 よろしくお願いします。

  • new演算子のメリット・便利さは何でしょうか。

    javascriptのnew演算子(コントラスタとインスタンス)はどんなときに役立ちますか? function Member1とfunction Member2を比較した場合 <script type="text/javascript"> function Member1 (firstName, lastName) { return lastName + " " + firstName; } document.writeln(Member1('氏名', '名字')); // 「名字 氏名」と表示 //ここより下は参考書より var Member2 = function(firstName, lastName){ // thisはコンストラクタによって生成されるインスタンスを表す //this.プロパティ名 = 値;として記述する this.firstName = firstName; //firstNameというプロパティを生成 this.lastName = lastName; //lastNameというプロパティを生成 this.getName = function(){ return this.lastName + " " + this.firstName; } }; var mem = new Member2('氏名', '名字'); //オブジェクトの初期化 document.writeln(mem.getName()); // 「名字 氏名」と表示 </script> function Member1のような通常の方法でできることを、 なぜfunction Member2のようにnew演算子を使うのか、 そうすることで、どんなメリット・便利さがあるのかと思いました。 いろいろ調べたのですが解決できず、ご教示を頂こうと思いました。 よろしくお願いいたします。

  • 比較演算子===と!==について

    PHP初心者です。 まず、===と!==が型が同じかどうかを比較する演算子だという事は調べて分かりました。 問題は以下のソースコードに関してです。 <?php class foo { public $a = 3; } class hoge { public $a = 3; } //真偽を文字列に変換する関数 function trueOrFalse($comp) { return $comp? 'true':'false'; } //4つの比較演算子を用いた比較の結果の表示 function compareObject($var1, $var2) { print('$var1 == $var2 --'.trueOrFalse($var1 == $var2)."\n"); print('$var1 != $var2 --'.trueOrFalse($var1 != $var2)."\n"); print('$var1 === $var2 --'.trueOrFalse($var1 === $var2)."\n"); print('$var1 !== $var2 --'.trueOrFalse($var1 !== $var2)."\n"); } //オブジェクトの生成 $f0 = new foo(); $f1 = new foo(); //$f0を代入、$f2は、$f0と同じオブジェクトを指す $f2 = $f0; $h0 = new hoge(); //結果の表示 print("同じクラス、プロパティが同じ\n"); compareObject($f0, $f1); print("同じオブジェクトを参照\n"); compareObject($f0, $f2); print("異なるクラス、プロパティは同じ\n"); compareObject($f0, $h0); ?> この結果分からないのは$f0と$f1の比較で===はfalseに!==はtrueになる事です。 型が違うとは一体どういう事なのでしょうか。 また、付け足す形になりますが、$f0と$h0の比較についても分かりません。 値は両方3です。 なのに==はfalseに!=はtrueになります。 これはどうしてでしょうか。 アドバイスどうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • JavaScriptde途中で、「exit」するには?

    function kensaku(){ s_data = document.kaiin_form.input_name.value; if(!s_data){ alert("キーワードを入れて下さい!"); } if(s_data != dumy){ ...... } for(i=st_no;i<=n;i++){ ......省略.................; .......省略................} } ---------------------------------- 3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。 3行目でexitするにはどうすれば良いでしょうか?

  • jqueryについて教えて下さい。

    貴重な場をお借りして質問させていただきます。 知識のある方、お力を貸して下さい。 今勉強の為プラグインなどを制作しておりまして、 一定の値までスクロールするとコンテンツをフェイドインさせるような スクリプトを書いています。 ただ、別ページに遷移して戻ってくると、opacityが0となり真っ白な状態と なってしまいます。 それを解決するためにcookieなどを使ったりはして出来たのですが、 スマートではないので、cookieを使用せずに出来れば嬉しいのですが、 良い方法ございましたら、ご教示いただけないでしょうか。 宜しくお願い致します。 <script type="text/javascript"> $(function(){ $('#contents1').locationFade(); $('#contents2').locationFade(); $('#contents3').locationFade(); $('#contents4').locationFade(); }) </script> (function($) { $.fn.locationFade = function(options){ var defaults = { fadeSpeed:500, location:300, easing:'swing' } var opts = $.extend(defaults , options); var windowHeight = $(window).height(); var target = $(this); target.css('opacity',0);//最初に透明度0とする $(window).on('load' , function(){ //画像が読み込まれた後でないとtargetOffsetがきちんと取れない為 target.each(function(){ var targetOffset = target.offset().top; if(windowHeight > targetOffset){       //最初から要素がwindowサイズ内に表示されているなら即fadeIn target.stop().fadeTo(opts.fadeSpeed , 1 , opts.easing) } $(window).on("scroll", function(){ var scrollTop = $(window).scrollTop(); var scrollVol = scrollTop + windowHeight - opts.location; //locationはその要素のどれだけ上に来た時に表示するかの値 if(targetOffset <= scrollVol){ target.stop().fadeTo(opts.fadeSpeed , 1 , opts.easing) }; }); }); }); }; })(jQuery);

  • jQueryの$.getJSONでデータを渡したい

    jQueryの$.getJSONでデータを渡したいのですが、 うまくいきません。 test.js {  "users": [   {    "name": "aoki",    "code": "0001"   },   {    "name": "ueno",    "code": "0002"   }  ] } 読み込む側 $.getJSON("test.js", { "name": "John", "code": "0003" }, function(json){  alert("JSON Data: " + json.users[0].name);  alert("JSON Data: " + json.users[1].name);  alert("JSON Data: " + json.users[2].name); }); { "name": "John", "code": "0003" }を渡しているのだから、 json.users[2].nameで、"John"が取得できると思ったのですが、 「'users.2.name' は Null またはオブジェクトではありません。」エラーになります

  • Like演算子について

    OS→Windows XP Home Edition Apache→2.0.59 PHP→4.4.4 今、Like演算子で検索しようとしていますが 上手く行きません。 <?php //データベースに接続する $conn = pg_pconnect("user=postgres password=grjtf dbname=mytbl"); //名前を検索する if(isset($_POST["action"]) && $_POST["sign"] == '検索') { //NAMEが書かれていた場合 if($_POST["name"]) { //NAMEを検索する //$sql4="SELECT * FROM mytbl WHERE name LIKE ('{$_POST['name']}')%"; //データベースに問い合わせて、クエリを実行する //pg_query($conn,$sql4); //成功メッセージ print "$_POST["name"]は検索されました。<br><br>"; } else { //失敗メッセージ print "$_POST["name"]は検索出来ませんでした。<br><br>"; } } ?> <!--$_SERVER['PHP_SELF']; ?>は、自分自身を呼び出す--> <FORM ACTION=<?php echo $_SERVER['PHP_SELF']; ?> METHOD=POST> <!--IDとNAMEとSCORE入力欄--> <input type=hidden name=action value=post> <!--入力ボックス--> ID: <input type=text name=id size=5> Name: <input type=text name=name size=15> SCORE: <input type=text name=score size=15> <br> <br> <!--ボタンオブジェクト--> <input type=submit name=sign value="書き込み"> <input type=submit name=sign value="点数修正"> <input type=submit name=sign value="一行削除"> <input type=submit name=sign value="検索"> </FORM> どなたか分かる方いればご教授お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう